hiromasa.zone : o)

2006/2/25 Saturday 投稿時の月齢:26.6  月名:二十七日月  潮汐:中潮 Moon:26.6[二十七日月]今日の心技体 : 低調期低調期低調期

文字コードに屈する このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - ひろまさ @ 4:54

どうも最近軟弱になったもので、スパムばっちこいくらいの勢いだったのはいつのころやら、最近は Akismet をいれて平穏な日々をすごしているひろまさです。 そして今日は文字コード問題に屈しました。 😳

hiromasa.zone は Shift_JIS でかかれているのですが、どうも WP 2.0 系にしてから調子が悪い。 具体的にいうと、データベースエスケープ (‘ とか \ とかデータベースに直接入れられない文字を変換して入れる)がうまく働かなくて、「ソフトウェア」なんて書くと「ソ」の部分が文字化けしてしまったりしていました。

昨日のエントリで「Software」なんて書いていたのは苦肉の策(笑)。 原因は「ソ」等の文字でおしり 1Byte が \ と同じコードであることでちゃんとエスケープしてからデータベースに格納しないと、おしりがとられちゃって文字化けしちゃうことにあります。

1.2 系の時もこの問題はあったので、簡単簡単とコードをおうも、、よく分からん。。 そして、どうも PHP 標準のエスケープを使うと Shift_JIS 場合いまいちらしい。 で、WP 2.0 はコアチームで直そうとしている形式はあるのですが、とりあえずまだ PHP 標準エスケープを使っている模様。

・・・とりあえず UTF-8 にしとこう.。。

技術に屈するぼく。 とほほ。 Otsukare さんに、ME の言語パッケージに Shift_JIS をいれてもらえた経緯があるだけに非常に心苦しい・・・。 負けました、ごめんなさい。。 🙁

しかし、やったことがある方なら分かるとおり phpMyAdmin でエクスポートしたデータを文字コード変換してインポートし直すというのはなかなか難儀です。 おまけに、ここでも Shift_JIS のエスケープ問題までつきまとい SQL が余裕でエラーしちゃいます。

とりあえず、なんとかなりましたが Shift_JIS に限らず phpMyAdmin でエクスポートインポートがうまくいかない場合のこつなどを書いてみます。

  • 全エクスポートインポートで SQL エラーでうまくいかないならテーブルごとのファイルに分けエクスポート
  • 既存のテーブルは何かあったときのために残す。 エクスポートしたファイルを開いて、テーブル名の前置詞を違うものに置換する(データベース作れる権限がある人は同名で別のデータベースにいれると楽)
  • 文字コード変換したい人はここでエクスポートファイルをテキストエディタとかで変換する
  • wp_options テーブルなんかは文字コードが混在していることがあるので、気合いの編集でファイルを分けたりして文字コードをそろえてみたりする
  • で、一個ずつインポート。 SQL エラーが出たら該当行の INSERT 文を別ファイルに移しインポート続行
  • だいたいできたら、エラーになる別ファイルにした SQL をじっくりながめて phpMyAdmin から1行だけ実行してみたりして原因を考える
  • 紆余曲折の元インポートできたら、wp-config.php で変更したテーブル名の前置詞におきかえる
  • WP 2.0 を使っている場合はオブジェクトキャッシュを削除するか停止する
  • でアクセス。

実は今回はまったのが WP 2.0 からついているオブジェクトキャッシュ。 全データ移行したのにログインではじかれたり、プラグインのオプションが更新されていない場合はきっとこれが原因です。 wp-contents/cache ディレクトリを消すか、wp-setting.php の disabele でいったんオブジェクトキャッシュを無効にすると良いようです。

以上、サーバの引っ越しなどの場合にご参考ください。 MySQL のファイル直接とれればこんなことしなくてすむのですが、、mysqldump も dmp とか ifx とかみたいなバイナリとれればいいんですけどね 🙂

4 Comments

Comment

  1. From: matopc - 2006/2/27 Monday Nighttime (Comment)

    MySQLの文字コード変換は大仕事のようですね。さすがです。

    最近MySQLのバージョン4.0から5.0へ移行したのですが、結構気を使ってしまいました。MySQLのトラブルはかなりアレですね。

  2. From: ひろまさ - 2006/2/27 Monday Nighttime (Comment)

    MySQL 5 系の日本語処理はなかなか難しいようですね~。 MySQL クライアントの文字コードとサーバの文字コードを別に設定したりできるようで、これが間違っていると化けちゃったりするみたいです。 奥が深い…

    実は Windows の XAMPP で WP のエントリを phpMyAdmin からみると化けちゃう現象が起きていて(WP からみると平気)、どうもこの辺のようなんですがいまいちまだ原因がつかめていなくいろいろいじってみています。:sad:

  3. From: matopc - 2006/2/27 Monday Morning (Comment)

    MySQL 4.1への移行を考えていたときにこちらのブログをみてみたのですが、わかる方にはわかるようでもやっぱり難解ですね。。:neutral:

    僕的にはUTF-8に固定してデータベースの入出力では何もいじらない、とイージーなポリシーをとってて何とかなってますが。

  4. From: ひろまさ - 2006/2/28 Tuesday Morning (Comment)

    いやぁ、非常に参考になりました。 サーバ、クライアントの文字コード設定は 5 系からではなく、4.1 系からなんですね!。

    >僕的にはUTF-8に固定してデータベースの入出力では何もいじらない、とイージーなポリシーをとってて何とかなってますが。

    そうですね。 どうも DB が文字コード変換に介入してくるのは妙な気分で… 😎


このサイトはコンテンツをフリーズしました。トラックバック・コメントは閉じられています。

新しいサイトは、

hiromasa.another :o)

です。 :-)

このサイトについて

このブログは引っ越しを行いコンテンツはフリーズしています。hiromasa.anotherへどうぞ。

Powerd By WordPress

We (Heart) WordPress

WordPressME Logo
WordPress Plugins

ブログ内検索

Todays Popular

WordPress Ring

はてなリング - WordPress -

情報

34 queries. 0.448 seconds.

このページの先頭へ