Personal tools

WordPress + MySQL4.0 + UTF-8

written by ultraviolet on

rauru-block.org は MySQL 4.1 で動いていますが、XREA みたいに MySQL 4.0 が EUC の設定で動いているレンタルサーバの場合、文字コードを UTF-8 にして WordPress を動かすと、記事の検索がうまくいかないことがあるようです。それも、常にうまくいかないわけではなく、うまくいったり失敗したりする。

この現象の原因について私は、EUCとUTF-8のバイト境界の齟齬のためだと推測しています。EUC は2バイト境界、UTF-8 は日本語の場合3バイト境界です。そうすると

binary 1 2 3 4 5 6
EUC 1文字目 2文字目 3文字目
UTF-8 1文字目 2文字目

と、文字の位置によって文字境界がズレてパックされるため、運が良ければきれいにマッチしますが、運が悪いとだめだめなことになる。ということなんじゃないかなあ多分。と思って先日2chのWordPressスレにも書いたんですが。

この問題を解決するには、posts テーブルの post_content フィールドとかあの辺が binary になっていれば良いのではないかと。いやもちろんその場合でもバイトずれの危険はあるわけですが、まあ UTF-8 ならバイトずれの発生率はかなり小さいだろうと。
一度 WordPress インストールしてしまった後で alter table するのはいろいろとアレな気がするので、インストールスクリプトをいじくって、インストール時に binary で create table されるようにするのがいいんでしょうなあ。wp-admin/upgrade-schema.php かな?
しかし私の近辺には MySQL 4.0 系のサーバが無いので、これでうまくいくかどうか検証できんのですよ。


One Response to “WordPress + MySQL4.0 + UTF-8”

  1. comment from mara

    これって XOOPS とかも同じ話?

Leave Your Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

« Back to text comment