cmd.exeでbashをこのように呼び出します。
c:\cygwin\bin\bash --login -c "echo ф"
Cygwin 2.8.0を入手
/usr/bin/bash: echo ф: command not found
引数をコマンド名の一部として扱います。 Cygwin 2.5.2で同じことをすると、出力が表示されますф
。
ベストアンサー1
これは以前はうまくいき、Unicesでbashを実行している人にとってはうまくいったので(ここでDebianでテストしました)、Cygwinのバグを見つけたようです。 Cygwinプロジェクトには次のプロジェクトがあります。Cygwinのバグ報告。ここには有用な情報や手順がたくさんあり、ここにまとめるには長すぎます。
これまでキャラクターを脱出すればこの問題を解決できるようです。 Bashは、フラグがecho
与えられたときに-e
様々なエスケープシーケンスを解釈します。
c:\cygwin\bin\bash --login -c "echo -e '\xd1\x84'"
動作する必要があります。 16進数D1 84
は、fのUTF-8エンコーディングです。ツールがある場合はunicode
これを知らせますが、次の文字のみが表示されod
ますxxd
。
$ echo -n 'ф' | od -t x1
0000000 d1 84
0000002
$ echo -n 'ф' | xxd -p
d184
Cygwin FAQでは、デフォルトではUTF-8を使用しているので、うまく機能していることがわかります。しかし、もちろん、他のエンコーディングを使用することもできます。Windowsでは、主にUTF16leを使用しています。):
$ echo -n 'ф' | iconv -t utf16le | xxd -p
4404