いしたく

MT3.35→MT5.02バージョンアップに伴うDB変更の文字化け

0

MT3.35→MT5.02へのバージョンアップを行っています。
理解出来ている範囲での状況を記します。

--------------------
旧環境
--------------------
MT:3.35
DB:Berkeley DB
文字コード:configにpublish charsetの記載はない。
       出力されたHTMLはUTF-8

--------------------
新環境
--------------------
MT:5.02
DB:MySQL5.0.77
文字コード:UTF-8で運用したい。

--------------------
経緯
--------------------
mt-db2sql.cgiによるコンバートで文字化けが発生したので、
ネットの情報から、mt-db-convert.cgiを見つけたので試す。

旧環境のMTルートに、mt-db-convert.cgiをアップロードし、実行。

左側(旧DB)にBerkeley DBの設定を入力
右側(新DB)にMySQLの設定を入力
[ 実行 ]

エラー無く終了

mt.cgiにアクセスすると、アップグレードの画面になるので、アップグレード。

エラー無く終了

mt.cgiにアクセスし、ログインすると正常にログインできるが、
入力されているエントリーの情報などがすべて文字化け。

--------------------
調査
--------------------
mt-db-convert.cgiの実行後の時点でMySQLのダンプを取り、
エディタで確認したところ既に文字化け。
よって、mt-upgrade.cgiによるものではないと思う。

ダンプファイルを色々な文字コードに変更してみても正しく表示できる
文字コードが見当たらない。

旧環境は、publish charsetの記載なくUTF-8なので、Berkeley DBにも
UTF-8でデータが入っているのではなかろうかと思うが、Berkeley DB
について知識が無いので不明。
ちなみにエディタで開いてみるとバイナリっぽいので良くわからないが、
いくつかのファイルを開いていると、Shift-JISで開いた時に一部日本語が
正しく表示されるものがあった。

何か糸口や解決策ご存知の方おられましたらご教授ください。
よろしくお願いいたします。

返信(2)

| 返信する
  • 新環境側のMySQLのデータベースのキャラクターセットがおかしいかもと思い、create database mt_db character set utf8;
    で作り直して、再度「mt-db-convert.cgi」を実行。

    エラー無く完了しましたので、再度ダンプを取って確認。

    今度は日本語が入る所がすべてNULLになり、英数字のみ反映されるという現象になりました。

  • Berkeley DBの中に複数の文字コードのデータが混ざってるのかもしれません。
    携帯用のプラグインとかでそういう事するものがあるのかも・・・
    以前解決できません。

返信する