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という関数をよくしらなかった

Related posts:

  1. SQLiteManager1.0.4

SQLiteManager1.1.0で文字化けが発生する” への4件のコメント

  1. 始めまして。
    最近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 = “設定値なし”

  2. 単純に日本語のlanguageファイルがEUC-JPだからというだけです。
    languageファイルをUTF-8に変換してみてください。

  3. ご指摘ありがとうございます。

    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回発生)

    上記エラーが表示された最下部に値が文字化けせずに表示されていました。

    もう少し!という感じがするんですが。。。(泣)

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ねこ認証:9つのパネルの中からねこを3匹選んでください

Additional comments powered byBackType