CentOS 5.6 のEmacsで TeraTerm 経由でUTF-8の漢字が表示できない

という問題にはまって、はや数ヶ月。ひらがなだけができたりする点がまた微妙な漢字で不思議だった。あきらめて vi を使ってました。ネットを検索して、いろいろはまって、もうだめか、と諦めてました。

よくある記述は .emacs に以下を書けとのこと。

;; for japanese
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8-unix)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)

でも、なぜかダメ。うーん。

結局、環境変数 LANG の問題、ということが判明。実はサーバインストールをしていたので、X 環境も無いし、英語でインストールしてたんですよね。。。

すなわち .profile などに

LANG=ja_JP.UTF-8
export LANG

と書けばOK.

まさか環境変数が問題だとは気づかず、マジに長期間はまってました。同じようなことにハマる人が出ないように、ここに書いておきます。

ちなみに、OSレベルでの変更は

/etc/sysconfig/i18n

を変更すればOK.