旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

EthnaのUTF-8化

2007年4月16日

“Ethna UTF-8″とかでググると、わんさか出てくるネタ。

前は無理矢理無視してEUC-JPでコーディングしてたのに
別件で他人事じゃなくなってしまった。

仕方ないので以下↓のように対処

  1. まずはnkfコマンドでアプリ側を全てEUC-JPからUTF-8へ変更する。
  2. 次にアプリ側の”app/アプリ名_ActionForm.php”へ
    「本体側の”Ethna/class/Ethna_ActionForm.php”内で全角文字を含むメソッド」を全て書き移してオーバーライドする。
  3. アプリ側はUTF-8なので文字化けが起こらないようになる。
ActionErrorをオーバーライドする方法が一番スマートっぽかったのですが
今回はアプリがUTF-8なので、
もし全角文字のエラーメッセージをソースにベタ打ちした場合に文字化けるという点で
なんか間違ってる気がしたのでやめました。
また、Ethna本体をUTF-8化するという漢な方法もあるようですが
Ethnaライブラリの管理がその分面倒になるので却下しました。
ひとつ終わったので
DBがMySQL4.0系でEUC-JPしか使えない件について
ゆっくり考えることができます。(多分どうにもならない)

***追記***
“ethna utf-8″とかで来る人をちらほら見るので、nkfコマンドを載っけときます。

#!/bin/sh
for i in `find ./ -name '*.php'`
do
# -w = UTF-8へ変換
# ちなみに -e で EUC-JPへ変換
nkf -wLu $i > $i.bak
rm $i
mv $i.bak $i
done

カレントディレクトリ以下の全てのファイルをUTF-8に置換します
“.tpl”とか別の拡張子のファイルを変換したい場合には、findコマンドの引数を書き換えて下さい。