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外の文字は表示できないようだ。


TeraTermPuTTYの2番目では記号類(symbols)を含む行をカーソル移動すると表示が乱れる問題もあるが、これにいたってはどのレベルの問題なのかも分からない
vimの場合は

:set ambiwidth=double

で、ターミナルとエディタの文字幅の扱いが一致して解消する。

*1:英文フォントにすると見やすいが記号類が化けてしまう

*2:Windowsのいわゆるマルチバイト対ワイド文字のマルチバイト