| 初期テーマの設定【WordPress】ブログトップ | PHP関連 | SuPHP使ってるときはphp.confいらないよ
htmlspecialcharsに注意【PHP】
この記事は1年以上前の記事のため、内容が古い可能性があります。
今更な話題ですが、詰まったのでメモ。
PHPが5.3から5.5に変わった途端、フォームにて日本語がPOSTされるとまるごと消えてしまう現象が発生しました。(ちなみにそのサイトはEUC-JPで作成されていました)
この現象はWordpressなどでもあったので、
default_charset
mbstring.internal_encoding
あたりの仕業だろうと思っていたのですが、これらはコメントアウトされている。(つまり特定の文字コードに設定されていない)
phpinfoを見てもおかしなところは全然見当たらない。
ということでいろいろ調べてみると、なんとhtmlspecialcharsが原因であることが判明しました。
このhtmlspecialcharsはもともとは、「ISO-8859-1」がデフォルト文字コードで変換がされていたのですが、PHP5.4から「UTF-8」がデフォルトになったとのこと。
しかも、php.iniで設定されている文字コードに準拠してくれればよいのですが、これはちゃんと設定してあげないと、強制的に「UTF-8」が使用されてしまうらしい。(第3引数をクォートなどで任意に空にしてあげれば準拠してくれるらしい。でも、第3引数をなにも設定してないとUTF-8となる。なんでやねん)
ということで、簡単な方法はないかを探していたけど、やっぱり引数をつけてあげるしかないみたい・・・
htmlspecialchars($hoge, ENT_COMPAT | ENT_HTML401, "ISO-8859-1");
参考サイト
nandani | 2014年09月23日 | コメント(0) | トラックバック(0) | PHP関連
トラックバック
トラックバックURL
コメントする
※メールアドレスが公開されることはありません。