環境
文字コード:EUC-JP
事象
Smartyを使ってるサイトを改修してた折、プルダウンを使ってるところの、プルダウンの中身のデータが空になってしまった。
原因
default_charsetの値が””(空っぽ)だった。
経緯としては、
Smartyを使ってるサイトを改修してた折、PHPを5から7にバージョンアップした。
それに伴い、php.iniのdefault_charsetの書き方を変える必要があった。
php5のphp.ini:
default_charsetについては、何も書かない。(デフォルトを適用させる)
この環境と同じにするために、php7では以下の様にした。
↓
php7のphp.ini:
default_charset = ""
対応
plugins/shared.escape_special_chars.php
ファイルを
にて、以下のように書き換えた。
// $string = htmlspecialchars($string);
$string = htmlspecialchars($string, ENT_NOQUOTES, 'EUC-JP');
参考にしたサイト
php5.4 以降での smarty での文字化け : 戯言
古くさくてかつニッチだけど書き残しておく。もう何年前に作ったか分からないシステムがあって、たまにサーバがリースアップしてどうたらとか、ちょっとした変更とかを忘れた頃に頼まれるので、秘伝のタレよろしく記憶を掘り起こして対処してるんだけど、大規模なリファクタ
救いの神でした。。。ありがとう。。。。
コメント