機能要望 > その他 > UTF-8でお知らせの文字化け修正 |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
nanasess |
投稿日時: 2007/4/23 17:49
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: UTF-8でお知らせの文字化け修正 大河内です.
原因がだいたい解ったような感じです. 検証してないので, はずしているかもしれませんが... まず, mbstring.script_encoding が定義されてなさそうですので, この値が null と仮定します. そうすると, PHPの内部エンコーディング(mbstring.internal_encoding) は, まず php.ini の EUC-JP が適用されている状態となります. ということは, PHP スクリプトを実行しない状態では, ファイルエンコーディングが UTF-8 なのにもかかわらず, mbstring.script_encoding が EUC-JP となると思われます. mbstring.http_input が UTF-8 となっていますので, UTF-8 で入力されますが, 何らかの原因(おそらく, mbstring.encoding_translation が on のため)で, エンコーディング変換をしようとし, mbstring.substitute_character が none のため, 空文字に変換されて出力してしまうのではないでしょうか. そこで, mbstring.encoding_translation off でエンコーディングの内部変換をしないように設定すると, 正常に出力されるようになる...と思われます. 下記のようになるよう設定してみてはいかがでしょうか?
また, こうした場合, モバイル版の検索では文字化けしたり, 検索できなかったりということはありませんでしょうか? モバイル版では, .htaccess で mbstring.encoding_translation 0 になるので, GET の文字列が SJIS のまま渡されそうです. したがって, mbstring.encoding_transration on にした上で, html/products/list.php の 84行目付近や, 99行目あたり, $_GET['name'] の箇所を,
このように rawurldecode で SJIS のバイトコードに正しく decode してやった上で, UTF-8 にエンコーディング変換してやらないと正しく動作しないような気がします. このあたりも正確に検証しておりませんのではずしているかもしれません... PHP 4.3.9 なのは関連性はないと思います. 正確には, テストスクリプトを作成して検証しなければならないのと, mbstring モジュールのソースコードを確認しなければわかりませんね... # ゴミになってしまったらスミマセン... |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
UTF-8でお知らせの文字化け修正 | ゲスト | 2007/4/6 17:48 |
Re: UTF-8でお知らせの文字化け修正 | ゲスト | 2007/4/7 9:29 |
Re: UTF-8でお知らせの文字化け修正 | nanasess | 2007/4/7 10:02 |
Re: UTF-8でお知らせの文字化け修正 | ramrun | 2007/4/18 21:41 |
Re: UTF-8でお知らせの文字化け修正 | nanasess | 2007/4/19 22:02 |
Re: UTF-8でお知らせの文字化け修正 | ramrun | 2007/4/20 0:49 |
Re: UTF-8でお知らせの文字化け修正 | nanasess | 2007/4/23 9:22 |
Re: UTF-8でお知らせの文字化け修正 | ramrun | 2007/4/23 15:46 |
» Re: UTF-8でお知らせの文字化け修正 | nanasess | 2007/4/23 17:49 |
Re: UTF-8でお知らせの文字化け修正 | ramrun | 2007/4/24 12:32 |
Re: UTF-8でお知らせの文字化け修正 | nanasess | 2007/4/24 17:05 |
Re: UTF-8でお知らせの文字化け修正 | ramrun | 2007/4/26 0:13 |