Tera Termで日本語がうまく表示できない
後から前書き
そもそも日本語がまったく表示できない人はターミナルプログラム(Tera TermやPuTTY)の文字コードをUTF-8にしてシェルのLANG環境変数もen_US.utf8やja_JP.utf8にした上で、iconv/nkfの使い方を調べたり、エディタの文字コード指定(例えば.vimrcのset fileencodings)を見直す。
仮に読めるようになったとしても今時他人とやり取りするテキストファイルにShift JIS系やEUC-JPを使うのは避けたい。
本題
symbols: ■:□:◆:◇:▲:△:▼:▽:【:】:‘:’:“:” fw-tilde: ~ wave-dash: 〜 vu: ゔ:ヴ backslash: \ yen: ¥
このテキストを表示したときに、PuTTY 0.60だと
フォントによるがクオーテーションが見にくい*1。
ここでTreat CJK ambiguous characters as wideをオンにすると
まあ実用的には問題ない。
しかしTera Term 4.63だと
いくつかの文字が置換されていて判別不能。表示のときに文字が置き換えられている雰囲気なので何かオプションがあると思うのだが。ソースを見たところTeraTermは内部でマルチバイト文字列*2としてターミナルを表示している。Unicodeに対応していてもCP932外の文字は表示できないようだ。
TeraTermとPuTTYの2番目では記号類(symbols)を含む行をカーソル移動すると表示が乱れる問題もあるが、これにいたってはどのレベルの問題なのかも分からない。
vimの場合は
:set ambiwidth=double
で、ターミナルとエディタの文字幅の扱いが一致して解消する。