Windows CMD.EXE コンソールで UTF-8 の入出力

360
NO IMAGE

scala (java も同じだけど) で UTF-8 のコンソール入出力をしたい場合は、起動時に -Dfile.encoding=UTF-8 をオプションとして付けるとよいみたい。
> scala -Dfile.encoding=UTF-8 ...

CMD.EXE で UTF-8 の表示をするには chcp 65001 すればよいのだが、素の CMD.EXE では、自分の環境だけかもしれないが monospace 有効(?)になっているらしく、表示が崩れてしまう。

こんな感じ。(本当は「实施例」と入力している)
image

仕方がないので、生の CMD.EXE はあきらめて ConEmu というのを使うことにした。
(公式ページ ⇒ http://conemu.github.io/

実行するとこんな感じ。
image

でも、コンソールから入力した「实施例」がちゃんと表示できたのはいいけど、何も処理せずにプログラムが終了してしまった。
これは断じて自分のプログラムの問題ではなくて、 Windows の CMD.EXE の CON デバイスの問題(仕様?)らしい。つまり、CON デバイスから UTF-8 文字列を読み込もうとすると、そこで EOF になってしまっているようなのだ。(chcp 65001 の後 > type con とやって何か漢字を入力してみると分かる)

でもなぜか Cygwin の cat.exe は EOF にならずにエコーを返してくれる。
image

ということで、最終的には、次のようなコマンドラインとなった。
image