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 のコマンドライン編集ができます)。