【php5.4】htmlspecialchars関数の動きが変わった
問題
phpを5.4にした。
EUC-JPのサイトで、文字が表示されない。htmlspecialchars()すると、文字が表示されない。
<?php //ソースはEUC-JP $a = 'テスト'; echo htmlspecialchars($a);
答え
php5.4からhtmlspecialcharsの動作が変わった。
http://php.net/manual/ja/function.htmlspecialchars.php
(第3引数)encoding
変換に使用されるエンコーディングを指定します。 省略した場合のデフォルト値は、PHP 5.4.0 より前のバージョンでは ISO-8859-1、そして PHP 5.4.0 以降では UTF-8 となります。
EUC-JPなどUTF-8以外のサイトでは、htmlspecialchars()するとき、文字コードも指定しなくてはならないようです。
<?php //ソースはEUC-JP $a = 'テスト'; echo htmlspecialchars($a, ENT_COMPAT | ENT_HTML401, 'EUC-JP');
コメント