no-image

SQLiteManager1.1.0で文字化けが発生する

HotPHPPERSQLiteManagerバージョン1.10リリースのアナウンスがあったのでインストールしてみた。

が。

日本語が化けまくる。

最初はlangファイルのエンコードがEUC-JPからUTF-8になったのかなと思ったけどソースを確認してみるとそうではない。

適当にごにょごにょしてて、langファイルからwordを取り出す所に問題があることがわかった。

include/SQLite.i18n.phpの47行目。

htmlentitiesがうまく動いてないので*1htmlspecialcharsに置換してみたら化けなくなったので日本語のlangファイル作成を担当している廣川 類さんにメールおくってみた。

$res = htmlentities($this->tabText[$index],ENT_NOQUOTES);
を
$res = htmlspecialchars($this->tabText[$index],ENT_NOQUOTES);
にして、
以降三つのstr_replaceもはずしてしまえばいいかなと。

しかも、「僕は英語とかわからないのでサクーシャの人に直すようにいってください><><」とか無理すぎるお願いをする。

そしたらすぐに返事をくれて、俺よりも遥かにスマートな修正を入れたSQLite.i18n.phpを送ってくれた。文字化けの原因はhtmlentitiesは第3引数にencodingを指定しないとうまくいかない。というもので廣川さんは、クラスのコンストラクタで読み込んでいるlanguageファイルを識別して文字コードを指定するように変更してくれた。

感動した!いい人すぎる!

このfixが早く反映されるといいなぁー

*1: ていうかhtmlentitiesという関数をよくしらなかった