あきら×ひろこ=ゆう

あきら・ひろこ・ゆうの家族航海日誌。

123456789101112131415161718192021222324252627282930

2006年06月19日(月)

phpMyAdminのエクスポートで文字化けする対策 [無料家計簿]

無料家計簿ではレンタルサーバを使用する都合上、データベースのメンテナンスはphpMyAdminで行う事となる。
ローカルで開発・設定したデータをテキストファイル(またはテキストを圧縮したファイル)にしてアップロードを行う。

しかし、出来あがったテキストを見てみると、みごとに文字化けをしている。
ググってみると、かなりの人が同様の現象で悩んであきらめていた。

しかし、なんとか対応出来たので、その方法を公開しよう。

原因を調べる

漢字変換は mb_convert_encoding() で行っていると推測して、すべてのスクリプトで mb_convert_encoding を検索してみた。

実際に使っているのはこのスクリプト。

phpMyAdmin/libraries/kanji-encoding.lib.php

この中の PMA_kanji_str_conv() で使っている。

$dist = mb_convert_encoding($str, $enc, $nw);

ここで $nw は変換元の文字コードで、

$nw = mb_detect_encoding($str, $enc_list);

で取得している。

$enc_list はグローバル変数で、文字コードの検出順を指定している。

ははーん。どうやら文字コードの検出順がおかしいんだな。

対策する

グローバル変数 $enc_list を設定しているのは、同じこのスクリプト。

phpMyAdmin/libraries/kanji-encoding.lib.php

この中の以下の関数で設定している。

PMA_internal_enc_check()
PMA_change_enc_order()

更新日付は 2003/11/26。このころはまだ UTF-8 は今ほど普及していなかった。修正個所では、検出順に含まれてすらいなかった。

あきらは以下のように修正して対応できた。各自の環境に合わせて調整する必要があるかもしれない。

//        $enc_list = 'ASCII,SJIS,EUC-JP,JIS';
        $enc_list = 'UTF-8,EUC-JP,SJIS,JIS,ASCII';

根本対策

レンタルサーバの事業者の方、どうか上記対策を行ってください。
いまどき、ブログもMySQLを使うんですよ。

レンタルサーバで困っている方は、管理者を説得して上記対策をしてもらおう。


phpMyAdmin のHTMLは UTF-8 で書き出されているので、内部的に全て UTF-8 に統一すべきだろう。

読み出したデータは全て UTF-8 に変換する。
また、書き出すデータは全て UTF-8 から変換する。

手間かもしれないが、あたりまえの事だ。

文字コードの自動判別をやめて、上記 $nw を 'UTF-8' 固定にすべきだ。

Posted by あきら at 05時26分   トラックバック ( 1 )   コメント ( 0 )

トラックバック

トラックバックURL

http://akira.matrix.jp/tb.php?ID=57

phpMyAdminエクスポート時の文字化けを解消

phpMyAdminでUTF-8のデータをSJISでエクスポートしようとしたとこ...

とあるWEBクリエイターのblog 2009年03月02日 13時19分

コメント

コメント投稿フォーム

名前:(この情報をCookieに保存させたい場合にチェック)
メールアドレス: (表示はされません)
URL: (名前にリンクされて利用されます)
コメント:
パスワード: (削除時に利用)

ページのトップへ ページのトップへ

広告

Expert技術情報
HTML文書・サンプルプログラム付き

FCKeditorファイルブラウザー制覇
設定が難しいとご相談を受けることが多いファイルブラウザーについて解説。
¥2,500 

FCKeditorプラグインマスター
FCKeditorの内部まで調査した上で、プラグインを作成する方法を解説。
¥2,500

FCKeditorエキスパート 第3版
FCKeditorの導入から設定までを解説。
¥3,500 

プロフィール

あきら

LAMP/LAPP中心に開発をしているSE兼PG。
最近はFCKeditorのプラグイン開発。
ふたご座・AB型。神経質。
<連絡先> akira@behappy.2-d.jp

検索


カテゴリーリスト

最近の記事

最近のコメント

最近のトラックバック

リンク集

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 あきら×ひろこ=ゆう All rights reserved.