• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォーム入力)

UTF-8のPHPでのフォーム入力の文字化け問題について

このQ&Aのポイント
  • UTF-8のPHPで作成したフォームに日本語を入力してsubmitすると、正しく文字化けせずに表示されるようです。
  • 入力値をhtmlentitiesでエンコードした場合、日本語が文字化けしてしまうため、デコード処理を行う必要があります。
  • 文字コードに関しては勉強したが、PHP内部での処理については理解していないので、ご教授いただきたいです。

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

  • ベストアンサー
  • randman
  • ベストアンサー率51% (17/33)
回答No.1

業務でフォームに携わるものですが、 1.入力値は必ずエンコードします。 まず、mb_detect_encodingで文字コードを解析し、次にmb_convert_encodingでエンコードします。 入力値は必ずしも予期していた文字コードとは限らないからです。 2.htmlentitiesは使いません。 エンコードさえすれば、あとはstripslashes、表示する時だけhtmlspecialcharsすれば十分だと思います。 とはいえ自分もかなりやっつけなので、参考程度に聞き流してください^^;

myaa_myu
質問者

お礼

ご回答ありがとうございます! >1.入力値は必ずエンコードします。 やはりmb_convert_encodingは使用するのですね。 実は、私の使用しておりますサーバがマルチバイト関数をサポートしていないのです。 php.iniを私が触る権限もありませんので、マルチバイト関数を使用しないでできないものかと思いました。 マルチバイト関数を使用しなくても、きちんとフォームからUTF-8の文字列が取得できるようなライブラリや 方法等がありましたら、ぜひ教えていただけないでしょうか。 >2.htmlentitiesは使いません。 ありがとうございます。 ずっとhtmlentitiesを使用することしか考えていなかったので、とても勉強になりました。 ありがとうございました。 また、マルチバイト文字列関数不使用で何かいい方法がございましたらご教授をどうかよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう