• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エンコードについて質問します。)

エンコードについて質問!文字化けが直らない!

このQ&Aのポイント
  • 質問文章:エンコードについて質問します。どうしても文字化けが直りません。ネットで色々検索して端から試してみましたが駄目でした。どなたか、アドバイスいただければと思います。
  • phpの設定はいじれず、基本エンコードは[EUC-JP]です。ソースファイルはUTF-8で扱っているんですが送信するとEUC-JPにエンコードが変わってしまいます。そこで、、 $_GETSTRINGCODE = "EUC-JP"; $_THISFILESTRING_UTF8 = "UTF-8"; $_MYGET = ""; foreach($_GET as $key=>$var) { mb_convert_variables($_THISFILESTRING_UTF8, $_GETSTRINGCODE, $key); mb_convert_variables($_THISFILESTRING_UTF8, $_GETSTRINGCODE, $var); $_MYGET[$key] = $var; } これで変換しなおしています。
  • アドバイスをいただきたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>phpの設定はいじれず、基本エンコードは[EUC-JP]です。 >ソースファイルはUTF-8で扱っているんですが送信すると >EUC-JPにエンコードが変わってしまいます。 まずはサーバのphpinfoでmb_string関係の設定を確認してください。UTF-8(で文字化けしていない)フォームから送信されたデータがEUC-JPで届くなら何らかの設定がされているハズです。ブラウザは(htmlソースをUTF-8と認識しているので)UTF-8で送っているのですから。 ただ「基本エンコードがEUC-JP」とはいっても、mb_internal_encodingの初期値がEUC-JPというだけのサーバがほとんどのハズです。きちんとmb_internal_encoding('utf-8')を書いて、場合によってはheader('Content-type: text/html; charset=UTF-8');まで書いておけば問題ないケースが多いです。 また「name属性値」に日本語を使う必然性は何でしょうか?name属性値はascii文字にしておき、受け取ってから適切な文字列に変えてしまってもかまわないですよね(入力値と違って既知の値なんですから)。

paranoaman
質問者

お礼

アドバイスいただきありがとうございました♪ 実はかなりいじりづらい部分でしたので補足の部分の修正が難しく、現状で修正を行わなければなりませんでした。 何とかクリアできたので参考までにソースを張っておきますね。 アドバイスいただきありがとうございました! header("Content-Type: text/html; charset=UTF-8"); require_once('include/header.php'); mb_language("ja"); $_GETSTRINGCODE = "EUC-JP"; $_THISFILESTRING = "UTF-8"; $_MYGET = ""; foreach($_GET as $key=>$var) { if( is_array( $var ) ){ $tmp = null; foreach( $var as $kk => $vv ){ mb_convert_variables($_THISFILESTRING, $_GETSTRINGCODE, $kk); mb_convert_variables($_THISFILESTRING, $_GETSTRINGCODE, $vv); $tmp[$kk] = $vv; } }else{ mb_convert_variables($_THISFILESTRING, $_GETSTRINGCODE, $var); $tmp = $var; } mb_convert_variables($_THISFILESTRING, $_GETSTRINGCODE, $key); $var = $tmp; $_MYGET[$key] = $var; }

関連するQ&A