LoginSignup
7
7

More than 5 years have passed since last update.

msysGitのbash/sshでUTF-8の入出力が可能な理由

Last updated at Posted at 2014-03-18

Windows上のGitで日本語ファイル名やコミット文が扱える、とかいうので2012年に話題になったっぽいですが、その副作用でsshなんかでもUTF-8の入出力が可能になっています。

何があったかは下記参照。
http://osdir.com/ml/msysgit/2013-09/msg00048.html

msys-1.0.dll(Cygwinでいうcygwin1.dll)内で対応されているので、これにリンクされてるバイナリのコンソールの入出力は基本UTF-8で動くことになっている模様。
コンソールの入出力はUTF-16とUTF-8の変換になっててサロゲートペア非対応とか書いてある。
パッチを見る限りはコンソール入力をUnicodeとみなして、UTF-8に変換しているみたい。
出力はどうなってるんだろうこれ。

今のWindowsは、システム内部ではUnicode(UTF16,CP1200)になっているのだけど、日本語Windowsでは表層に現れる文字列はShift_JIS(CP932)だったりするんで、そのへんの変換にシステムのコードページを使ったりするはず。
なんで、chcp 65001とかすると理屈ではUTF-8で入出力するんだとおもうんだけど、入力がダメなんだよな。

minttyだとローカルのlsで文字化けして、ckwではしてなかったんだけど、minttyではutf-16をutf-8と思って処理してるからかなと。

そんなわけで、msysGit以外のmsys-1.0.dllを消すと幸せになれる気が、したんだけど、どうもだめっぽい。えー。

こんな感じ

MinGWのbashでLANG=ja_JP.UTF-8なホストにssh接続した時

mingw.png

msysGitのbashの場合

msysgit.png

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7