• 締切済み

FORMからの文字入力文字化け

「.htaccess」で設定した場合、正常に動作するのですが、「自作スクリプト内」でPHP環境を設定すると文字化けします。 フリーの掲示板が「.htaccess」で設定した場合、文字化けしますので、自作スクリプトも今回からスクリプト内部からPHP環境を設定し動作確認をしています。 FORMからの文字入力だけが文字化けしてしまうのですが、解決方法が見出せずに困っています。 また、「mbstring.encoding_translation」の設定方法がわからずに設定していないため、入力文字化けするのでしょうか。 表示だけは、文字化けせずに表示されます。FORMからの入力文字だけが文字化けします。 解決方法をご存知の方がいらっしゃいましたらご教授のほど宜しくお願いします。 # .htaccessで設定する場合 php_flag output_buffering "On" php_value output_handler "mb_output_handler" php_value default_charset "Shift_JIS" php_value mbstring.language "Japanese" php_value mbstring.internal_encoding "EUC-JP" php_value mbstring.http_input "auto" php_value mbstring.http_output "SJIS" php_value mbstring.detect_order "auto" php_flag mbstring.substitute_character "none" php_flag mbstring.encoding_translation "On" # 自作スクリプト内で設定する場合 ini_set("output_buffering", "On"); ini_set("output_handler", "mb_output_handler"); ini_set("default_charset", "Shift_JIS"); mb_language("Japanese"); mb_internal_encoding ("EUC-JP"); mb_http_input("auto"); mb_http_output("SJIS"); mb_detect_order("auto"); mb_substitute_character("none"); ob_start("mb_output_handler");

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

.htaccessでスクリプト別に設定できないんでしょうか? <Directory "/path/to/script/"> php_value mbstring.http_input "auto" php_flag mbstring.encoding_translation on </Directory> ロリポップはたぶん mbstring.http_input pass mbstring.encoding_translation Off のような設定だったと思うので mb_convert_variables("EUC-JP", "auto", $_POST); あたりで変換してみては。

参考URL:
http://search.net-newbie.com/php/function.mb-convert-variables.html
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

フォーム入力はhttp_inputあたりが関係してきますが、 input関連はスクリプト内で設定しても効果ありません。 php.iniや.htaccessでエンコーディング指定するか、 passにしてスクリプト内で自前エンコーディングする必要があるかと。 PHPマニュアルのどこかに書いてあったような。

marinebeer
質問者

お礼

使用しているレンタルサーバーがロリポップの為、フォルダ単位にもphp.iniが使えません。 ハッスルだとフォルダ単位にphp.iniが指定できるので便利ですが・・・。 結局、文字コード変換を組み込まないとダメですかね!! 「.htaccess」で設定すれば問題ないのですが、それだとこんどはフリーの掲示板が文字化けするし、どっちつかずの状態で!! 以下の設定に変更してもダメ!! ini_set("output_buffering", "On"); ini_set("output_handler", "mb_output_handler"); ini_set("default_charset", "Shift_JIS"); ini_set("mbstring.language", "Japanese"); ini_set("mbstring.internal_encoding", "EUC-JP"); ini_set("mbstring.http_input", "auto"); ini_set("mbstring.http_output", "SJIS"); ini_set("mbstring.detect_order", "auto"); ini_set("mbstring.substitute_character", "none"); ini_set("mbstring.encoding_translation", "On"); ob_start("mb_output_handler");