昨今のServerサイドのWeb環境文字コードはMS=Shift_JIS、Linux=EUC-JPだったが、
どうやらUTF-8に落ち着いてきたらしい。
他国の言葉もこれで一括対応出来る、マルチ言語対応が楽だからだろう:roll:
UTF-8は1Byteから4Byteで1文字を表現する可変文字コードである、
多少脆弱性の問題などあるらしいがこれが主力の文字コードときっとなるなぁ~詳しくはWiki等で:razz:
さて、Wordpress MEも2.2系からUTF-8のみの対応になったらしく、
今後、EUC版はバージョンアップが出来なくなるので、
現在のphp4系、MySQL4.0系、Web文字コードEUC-JP環境から
新版のphp5系、MySQL5.0系、Web文字コードUTF-8環境にお引越しをやります。
さらに試しにドメイン名も変えちゃいます!
もちろん、問題点が続発したので記述しておきます:evil:
作業順序
1.旧Wordpress2.0系のコンテンツ及びDB BackUp
2.新サーバーにBackUpをコピーし、起動&正常動作確認
3.Wordpress2.2を上書きしVersionUp、起動&正常動作確認
こんなところでまず
1.旧Wordpress2.0系のコンテンツ及びDB BackUp
・phpMyAdminでテーブル群をsqlとしてバイナリファイルでBackUp
この時にCreate Databaseはいらない
・コンテンツをFTPツールでBackUp
・・・無事に終了
2.新サーバーにBackUpをコピーし、起動&正常動作確認
・sqlファイルをバイナリーEditで開き、URLとサーバーパスを置換で変更、普通のEditだと駄目ですよ:cool:
例:URLは「hoge.mein.jp/blog」などを「hoge2.main.jp/blogman」に置換
例:Server内コンテンツPathは「/usr/local/htdocs」などを「/usr/local/htdocs2」に置換
あくまでドメイン(URL)を変える時なので変えない人は上記作業はいらない
・phpMyAdminで新規DBを作成する。文字コードは「UTF8」なので照会は「UTF8_unicode_ci」でCreate!
・先ほどBackup&編集したsqlファイルをphpMyAdminで作成したDBに対してインポート処理
BackupしたsqlファイルはEUC-JPなので、ファイル種類のオプションは「eucjpms」にしてsqlオプションは「MySQL4.0」互換でGo!
・FTPでbackUpコンテンツをUpLoad!
完了!・・・・と行きたい所だけど、もちろんそうは問屋が卸さない:cry:
問題点
1.Wordpress内のオプションの文字コードがEUCのまま
2.これまたオプションのrole権限がEUCのまま
「Warning: Invalid argument supplied for foreach() in /XXXX/wp-includes/capabilities.php on line 19」などのエラーがでる
3.テーマファイルがEUCのままなので日本語を使用している場合は文字化けする
UTF-8はASCIIと互換があるのでASCII系の文字列の場合はEUCファイルでも問題ないが、日本語を使用しているWordpressファイルは基本的に文字化け対象に・・・
4.Wordpress2.0系のdbアクセス部分にMySQL5.0系のUTF-8に対応するコードが必要
MySQLがUTF-8の場合、アクセス時に教える必要がある。
5.wp-config.phpの修正
解決方法 (注:DB系のプレフィックス文字「wp_」は環境により違う)
1.Wordpress内のオプションの文字コードがEUCのまま
A.phpMyAdminで「wp_options」テーブルを開き、option_nameが「blog_charset」のレコードを開くそして「option_value」値を「UTF-8」に変更しUpdate!
2.これまたオプションのrole権限がEUCのまま
A.phpMyAdminで「wp_options」テーブルを開き、option_nameが「wp_user_roles」のレコードを開く、「option_value」値が
「a:5:{s:13:"administrator";a:2:{s:4:"name";s:6:"管理人";s:12:"capabilities";a:31:」
などになってると思いますが、ここがみそで「s:13:”administrator”」はs:13とは文字数を表していてEUCでもUTF-8でも”administrator”は13Byteなのですが、「s:6:”管理人”」などはEUCだと全角2Byte×3=6Byteですが、UTF-8だと全角が3Byteなので=9Byteでなくてはいけません。なので「s:9:”管理人”」として、他にも漢字、ひらがながあれば同じように修正してからDBをUpdateする。
3.テーマファイルがEUCのままなので日本語を使用している場合は文字化けする
A.これはEUCファイルをUTF-8文字コードに変換できるツールで修正して:razz:
KanjiTranslatorなど良いですよ!
4.Wordpress2.0系のdbアクセス部分にMySQL5.0系のUTF-8に対応するコードが必要
A.これはphpファイルを修正する必要があります。
「wp-includes/wp-db.php」ファイルの以下の部分に「 mysql_query(“SET NAMES utf8”, $this->dbh); 」を追加する
function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
if (!$this->dbh) {
...
}
mysql_query("SET NAMES utf8", $this->dbh);
$this->select($dbname);
5.wp-config.phpの修正
A.これはEUCの部分をUTF-8と変えてください。
また、2.2系からconfigに追加がありますので詳しくはWordpressMEを参照して:roll:
以上の対応で修正完了、そのあとWordpress2.2系を上書きコピーしてupgradeすればOK:razz:
関係ないけどこんなのありました!
FFFTPでUTF-8を扱える拡張版・・・ここに・・・作者さん使わせて頂きます!感謝