Windows10のcmd、Powershellのレガシモードと日本語出力

開発環境

現象

  • Windows10バージョン1809(2018 October)で
    python2.7とdockerいずれかの日本語出力(というかマルチバイト文字?)が壊れる

    • Windows10バージョン1803(2018 April)は大丈夫
  • cmd/PowerShellのモード依存

    • デフォルトモード
    • レガシモード
デフォルト レガシ
python2.7 print u’あ’ でIOError Errno0 -
docker - コンテナ内で日本語を標準出力すると
“New state of ‘nil’ is invalid”
コンテナから追い出される

バージョン確認

winver

cmd/Powershellの2つのモード

  • Win10バージョン1809からは、cmd/PowerShellには「レガシモード」がある

    • ウィンドウのタイトル部分を右クリ→プロパティから切り替え可能

回避

  • デフォルトモード使う

    • dockerの日本語出力は壊れない
  • デフォルトモードのcmdやPowerShellでも、emacs上で動かせば、python2.7の日本語出力は壊れなかった

根治

  • python3x使え