- ベストアンサー
漢字の一部が文字化けする原因と解決方法
- カタログの請求フォームで漢字の一部が文字化けする問題が発生しています。
- 漢字の「平行棒」と打つと「・燥欠棟-s棒」と文字化けします。
- この現象はIE7で化けますが、FF3.5では化けません。解決方法をご存知の方は教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<?php phpinfo(); ?>は動きますか? mbstring.encoding_translation mbstring.http_input mbstring.http_output の設定はどうなってますか? ソースコード内でmb_convert_xxxという関数は使ってますか?
その他の回答 (1)
- tany180sx
- ベストアンサー率63% (239/379)
こないだの質問ですが、参考になりますか? http://oshiete1.goo.ne.jp/qa5277163.html
お礼
有難うございます。 こういうように確かに一部だけ文字が化けてしまうのです。 が、教えていただいた部分を参考に触ってみたのですが、変わらないです。 きっとこちらがイマイチ、ちゃんと理解してないところもあるかもしれないですが。 <?php if($_SERVER['REQUEST_METHOD'] == "POST") { if(ini_get('magic_quotes_gpc') == "1") { foreach($_POST as $k => $v) { $_POST[$k] = stripslashes($v); } } } if($_SERVER['QUERY_STRING'] != "") { if(ini_get('magic_quotes_gpc') == "1") { foreach($_GET as $k => $v) { $_GET[$k] = stripslashes($v); } } } $_POST['machigai'] = 0; $flg1 = 0; $flg2 = 0; $flg3 = 0; $flg4 = 0; $flg5 = 0; $catalog = $_POST['catalog']; //変数にセット、特殊文字をエスケープ $name = htmlspecialchars($_POST['name']); (省略) ?> <?php $catalog = Mb_Convert_Kana($_POST['catalog'],"S"); $catalog = str_replace("<BR>","\n",$catalog); //文字列の置換 ?> <?php if ($_GET['catalog'] == "") { if ($_POST['catalog'] == "") { print "カタログが選択されていません。\n<BR>"; print "ブラウザの「戻る」ボタンを押して戻り、選択して下さい。\n"; } else { $catalog = $_POST['catalog']; print $catalog; print ("<input type='hidden' name='catalog' value=\"$catalog\">"); } } else { $catalog = $_GET['catalog']; print $catalog; print ("<input type='hidden' name='catalog' value=\"$catalog\">"); } ?> カタログ名の出力はここでしていると思うのですが。
お礼
<?php phpinfo(); ?>は動きます。 mbstring.encoding_translation = Off mbstring.http_input = auto mbstring.http_output = SJIS となっておりました。↑のせいなんですかね? これだけのプログラムで成り立っていないことから、php.iniの設定を変更するのはよくないと思い、.htaccess を作成して、 あげてみたところひとまず解決をばいたしました。 大変助かりました。有難うございました。