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

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

  • 2005-06-15(2005-06-15 16:25:42)

このエントリーをはてブする

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

Comment

こぶ - 2006-02-03 13:30:42

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

halt - 2006-02-06 01:37:58

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

こぶ - 2006-02-07 02:03:36

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

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

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

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

halt - 2006-02-07 14:35:22

記事にしました。私の環境だとうまくいったのですが、、

SQLiteManager1.1.3でUTF-8のlangファイルを作る
http://project-p.jp/halt/anubis/blog_show/525

Comment Form

Name
Url
Comment
Cookie
Preview

Trackback

TrackBackPingURL:

はてブ

Page Top