HotPHPPERでSQLiteManagerバージョン1.10リリースのアナウンスがあったのでインストールしてみた。
が。
日本語が化けまくる。
最初はlangファイルのエンコードがEUC-JPからUTF-8になったのかなと思ったけどソースを確認してみるとそうではない。
適当にごにょごにょしてて、langファイルからwordを取り出す所に問題があることがわかった。
include/SQLite.i18n.phpの47行目。
htmlentitiesがうまく動いてないので(*1)htmlspecialcharsに置換してみたら化けなくなったので日本語の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という関数をよくしらなかった
Related posts:
始めまして。
最近SQLiteManager1.1.3を使用しはじめた者です。
同じく文字化けで悩んでいます。
初期画面で言語をJapaneseと選択すると正しく表示されるのですが、データベースから取り出した値が文字化けしてしまいます。
データベースへはUTF-8で格納しています。
仮にEUC-JPで格納すると、正しく表示されます。
いろいろ調べたところ、SQLiteはUTF-8を推奨している様子なので、できればUTF-8を使用したいのですが・・・。
SQLiteManagerのどこかを触れば正しく表示されるのでしょうか?
ご存知の方、ご教授下さいm(__)m
以下は私のphp.iniのmb_stringです。
mbstring.detect_order = auto
mbstring.encoding_translation = On
mbstring.func_overload = 0
mbstring.http_input = auto
mbstring.http_output = pass
mbstring.internal_encoding = EUC-JP
mbstring.language = Japanese
mbstring.substitute_character = “設定値なし”
単純に日本語のlanguageファイルがEUC-JPだからというだけです。
languageファイルをUTF-8に変換してみてください。
ご指摘ありがとうございます。
japanese.inc.php の10行目辺りの$charsetをutf-8として、
ファイルもUTF-8で保存しなおしたところ、ページ毎に以下のエラーが発生しました。
Warning: cannot yet handle MBCS in html_entity_decode()! in /virtual/www/SQLiteManager/include/common.lib.php on line 202 (211回発生)
Warning: cannot yet handle MBCS in html_entity_decode()! in /virtual/www/SQLiteManager/include/common.lib.php on line 269 (1899回発生)
Warning: cannot yet handle MBCS in html_entity_decode()! in /virtual/www/SQLiteManager/include/common.lib.php on line 273 (422回発生)
上記エラーが表示された最下部に値が文字化けせずに表示されていました。
もう少し!という感じがするんですが。。。(泣)
記事にしました。私の環境だとうまくいったのですが、、
SQLiteManager1.1.3でUTF-8のlangファイルを作る
http://project-p.jp/halt/anubis/blog_show/525