[Codeigniter-users] 日本語版 Content-Type:ヘッダの出力について

Back to archive index

木下 敏夫 kino****@tktoo*****
2007年 12月 2日 (日) 02:17:38 JST


木下です。

>>> 設定に $config['charset'] があるので、ハードコードせずに、それに合わせて
>>> 出力した方がいいんじゃないかとも思いますが。
>> そうですね。
> 
> 日本語版CIでは、そうあるべきでしょうね。日本では、Shift_JISやEUC-JP
> ができないと、それでCIをやめてしまう人がいるかもしれません。

実際には $config['charset'] の値を埋め込んで出力するよりも
$config['charset'] に書かれている文字コードと views を記述している
文字コードに違いがあったときに文字化けの原因になるのが怖いかも。

ところで
$configに定義された'charset'は
system\libraries\Input.php の 856行目からの
	function _html_entity_decode_callback($match)
	{
		$CI =& get_instance();
		$charset = $CI->config->item('charset');

		return $this->_html_entity_decode($match[0], strtoupper($charset));
	}

で利用されているぐらいで出力系には無いですね。

URLエンコードされた入力を CodeIgniter が 内部で文字列を比較するときにこのcharsetが
重要になるのであって出力に影響を及ぼしていないようです。

従って、Application で views や controllers に書かれた日本語の
サーバー上にある文字コードを記述するのが正解のように思えます。

現在の $config['charset'] は
php.iniに記述する
	mbstring.internal_encoding
若しくは
	mbstring.http_input
と同じようなもので

出力に対する
	mbstring.http_output
とは違うというところでしょうか。






>>> ちなみに、私の言っているのは、HTML の meta http-equiv ではなく、HTTPヘッダ
>>> の方です。
>> そうかなと思いながら・・・
>>
>> ブラウザへの出力はsystem\codeigniter\CodeIgniter.php の下記のコードで行われているようなので
>> $config['enable_hooks'] を TRUEにして
>> system\application\config\hooks.php に
>> function post_controller を作成してそこで行うとか。
>>
>> $EXT->_call_hook('post_controller');
>>
>> /*
>>  * ------------------------------------------------------
>>  *  Send the final rendered output to the browser
>>  * ------------------------------------------------------
>>  */
>>
>> if ($EXT->_call_hook('display_override') === FALSE)
>> {
>> 	$OUT->_display();
>> }
>>
>>
> 
> 日本語版CI作成の際の1つのアイディアでしょうか。
> ありがとうございました。
> 
> そもそも、configでの$config['charset']がscaffolding以外の
> ユーザ領域のviewsまで干渉すべきかどうかですよね。
> 
> viewsでは各個人が、
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
> <title></title>
> </head>
> 
> <body>
> </body>
> </html>
> などとコーディングするはずです。
> $config['charset']はDB、クラスやヘルパーへの影響だと思っていましたが。
> 
> 他のフレームワークを調べた上で検討しましょうか。
> 特にCakePHPなどと比較すべきでしょうか。
> CakePHPはレイアウト機能(デコレータ?)が実装されていますよね。
> 敷居がいきなり高いのが特徴ですね。
> 
> //bossatama
> 
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
> 
> 


-- 
木下敏夫
http://www.tktools.jp/
mailto:kino****@tktoo*****




Codeigniter-users メーリングリストの案内
Back to archive index