2005年8月16日
UTF-8 への移行計画
以前からやろうやろうと思っていた、 UTF-8 への移行計画を実施し ました。これまで手元のテキストファイルの類はすべて EUC-JP で 保存していたのですが、これを UTF-8 にしようという計画です。
Emacs の設定
まずは Emacs の設定です。これまで euc-jp となっていた部分を utf-8 に置き換えました。
(set-language-environment "Japanese") (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8)
新規に作成したファイルの文字コードを UTF-8 にするには次のように設定します。この設定は leim-list.el をロードしたりすると元の japanese-iso-8bit (EUC-JP) に戻されてしまうので、 .emacs の最後のほうに入れるのが無難です。
(set-default-coding-systems 'utf-8)
Emacs は CVS 版を使っています。CVS 版は次のように実行して入手可能です。 Mule-UCS を使えば、 古い Emacs でも同様の設定ができると思います。
% export CVS_RSH=ssh % cvs -d :ext:anoncvs@savannah.gnu.org:/cvsroot/emacs co emacs
Emacs で編集中のファイルのエンコーディングを変更するに は C-x RET f (M-x set-buffer-file-coding-system) を実行します。
シェルの設定
次はシェルの設定です。Debian の場合、 locale -a |grep ja_JP と実行して ja_JP.utf8 が含まれていれば、 ja_JP.utf8 のロカー ルを使えます。含まれていなければ、/etc/locale.gen に ja_JP.UTF-8 UTF-8 という行を追加して sudo locale-gen を実行します。
~/.zshrc の LANG の設定を ja_JP.eucJP から 以下のように変更しました。これで日本語のメッセージは UTF-8 で表示されます。
export LANG="ja_JP.utf8"
PuTTY の設定
日本語パッチつきの PuTTY (puttykjbin-20050503.zip を利用) を使って、 UTF-8 を表示するには、設定の「ウィンドウ→変換」からUTF-8 (CJK) を選びます。付属の readme2.html に次のような説明がありました。
UTF-8 (CJK) : 中国語、日本語、韓国語用の文字幅に対応している UTF-8 です。PuTTY 0.58 以降では Treat CJK ambiguous characters as wide オプションもありますが、フォント関係の問題 のため残してあります。
EUC-JP のファイルを UTF-8 に変換
http://namazu.org/~satoru/ 以下のファイルを UTF-8 に変換するために、 nkf 2.0.5 を使って次のように実行しました。
% nkf -Ew **/*.html.ja | nkf --guess UTF-8 % nkf -Ew --overwrite **/*.html.ja
最初の実行では変換結果が正しく UTF-8 になるか念のため確認しています。 もし文字化けが起きた場合は BINARY という表示になります。 **/*.html.ja は、再帰的に *.html.ja というファイルを探すという、 zsh の便利な記法です。
それから、 XHTML の <?xml ... encoding="euc-jp"?> の部分を utf-8 に変換するために次のように実行しました。
% perl -i -pe 's!^<\?xml version="1\.0" encoding="euc-jp"\?>$!<?xml version="1.0" encoding="utf-8"?>!' **/*.html.ja
その他の設定
次のような環境変数もセットしました。 LC_ALL などの LC_ から始まる環境変数は一切セットしていません。
export LV='-Ou8' export PERL_BADLANG=0
.screenrc には defencoding UTF-8 と設定しました。
まとめ
UTF-8 への移行が一通り完了しました。ついでに、 Windows のメモ帳で開けるように、改行コードを CR+LF に変更し ようとも思いましたが 、ソースコードではまりそうなのでやめてお きました。
あとは zsh 上で UTF-8 の入力やファイル名補完が不自由なく使え るようになればばっちりです。zsh の Unicode 対応は徐々に進んで いるようなので楽しみです (追記: 最近の zsh 4.3.x 以降では UTF-8 のコマンドライン編集ができます)。