さくらインターネットにpWebManagerをUTF-8で入れようと試みる。(ついでにDBことMySQLの文字コードも変えちゃう)
DBの文字コードをutf8にしちゃう
いやならテーブル単位でやるしか。
$ echo "alter database アカウント default character set utf8;" | mysql -h mysql数字.db.sakura.ne.jp -u アカウント -p
>パスワード聞かれるから入力する
$ cd 適当なディレクトリ
$ wget 'http://www.pwebmanager.org/pwm/top.html?module=Default&action=Download&type=File&mcode=61&fcode=6'
$ mv top.html\?module\=Default\&action\=Download\&type\=File\&mcode\=61\&fcode\=6 pwm-3.2.2.zip
$ unzip pwm-3.2.2.zip
$ cd pwm-3.2.2
$ find . -type f \( -name "*\.php" -o -name "*\.html" -o -name "*\.tpl" \) -exec sed -i '' 's/euc-jp/utf-8/g' '{}' +
$ find . -type f \( -name "*\.php" -o -name "*\.html" -o -name "*\.tpl" \) -exec sed -i '' 's/EUC-JP/UTF-8/g' '{}' +
$ find . -type f \( -name "*\.php" -o -name "*\.html" -o -name "*\.tpl" \) -exec nkf -w --overwrite {} +
後は前やったとおり。
http://d.hatena.ne.jp/hinami_net/20101221/1292934994
2010/12/24 23:51追記
どうやらこれだけではダメらしい。
アプリケーションがコネクトする度に文字コード指定せにゃならんようだ。
なんか美しくないけどコードに直接手を入れて対応することにした。
対象ファイルは
pwmt/system/webapp/lib/StandardAction.class.php
以下diff
StandardAction.class.php.patch
--- StandardAction.class.php 2010-12-24 23:49:00.000000000 +0900 +++ StandardAction.class.php~ 2010-12-24 23:48:43.000000000 +0900 @@ -12,6 +12,7 @@ function initialize(& $controller, & $request, & $user) { if (!$request->hasAttribute('initialized')) { $this->db = new Database(); + $this->db->execute('SET NAMES utf8', null); //何度も同じ処理をしないためのフラグ $request->setAttribute('initialized', TRUE);