質問: ### `docker`コマンドの出力からマルチバイト文字が無視されてしまう 現象はカンタンに再現できます。 例えば以下の`docker`コマンドを、Windows標準のコマンドプロンプト上で実行します。 ``` > docker run --rm centos echo "123まるちbyte" ``` `123まるちbyte`と表示されて欲しいのですが、結果は、こう。 ``` 123byte ``` 綺麗に「まるち」だけが消えて、詰まります。 以下、実際のキャプチャです。 ![123まるちbyte キャプチャ](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/93c2168f24fd0970fb7efe9d0452359d.png) これを、正常に`123まるちbyte`と表示されるようにするには、どうしたらいいのでしょうか。 せめて現象が起きている原因だけでも分かりましたら幸いです。 ### 色々試した Windows標準の`cmd`じゃなくパワーシェルでも、nyagosでも、管理者実行モードでも、`-it`付けても、`-e TERM=xterm`やロケール指定しても、`centos`じゃなく`ubuntu`でも、全て同じ結果です。ついでに、Docker Toolbox for Windows でも同様です。 ちなみに、MacやLinuxのDockerでは問題ないようで、`123まるちbyte`と表示されました。 ### `docker run`や`docker exec`でコンテナの中に入ってる時も起きる コンテナの中に入って作業してても、マルチバイトの出力があるようなスクリプトを実行すると上記のような結果になるか、最悪以下のようなエラーを吐いて、強制的にコンテナから退場させられてしまう場合もあります。 ``` # コンテナに入る > docker run --rm -it centos bash # 首相官邸のページを取得して出力する(マルチバイト文字は表示されない) $ curl http://202.232.86.11 # エラー吐いて→コンテナ退場 New state of 'nil' is invalid. > ``` ### 愚痴 コマンドプロンプト上で`tailf`してたらログに日本語入ってくるとか普通にあるケースだと思うんですが、これだれも問題視しないんでしょうか・・。 検索してもそれらしき情報を見つけられないまま、数ヶ月が経ちました。 Windowsでコマンドプロンプト上からDockerを実行したり眺めたりする奇特な方は、あまりいないのかな・・。
回答: 根本的な解決方法ではありませんが、MINGW や ConEmu 上での cmd であれば「123まるちbyte」と表示できることを確認しました。 参考: MINGW32] ![イメージ説明 ConEmu] ![イメージ説明 必要に応じてこちらを使っていこうと思います。