2

Win7-64bit で cygwin を使用しており、デフォルトのロケール設定として「zh_CN.UTF-8」を使用しています。ときどき、cygwin からの出力の一部が、次のような不適切なエンコーディングで読み取れないことがあります。

[junit] ▒▒▒▒: ▒Ҳ▒▒▒▒▒▒޷▒▒▒▒▒▒▒▒▒ can't

何か案が?ありがとう。

4

2 に答える 2

6

sharajava は自分で解決策を見つけましたが、この解決策は少なくとも私にとってはあまり好ましいものではないと言わざるを得ません。問題は、テキストの端末オプション (実際には「CharSet」mintty) を「GBK」に変更すると、UTF-8 文字が画面に表示されることです。それらは乱雑で判読できないコードになります。中国語のウェルカム テキストまたは漢字を含む UTF-8 でエンコードされたソース コードが読み取り不能なコードとして表示されるかどうか、VIM で実験しました。それは私にとって、または私が推測するように、ほとんどの人にとって受け入れられません。

最後に、Windows コマンド プロンプト (つまりcmd.exe)の欠陥を回避し、mintty乱雑なコードに苦しむことなく DOS コマンドを実行できるようにする方法を見つけました。これが私の解決策であり、役立つかもしれません。

テスト環境:
OS: Win7 64 ビット中国語 (簡体字
) Cygwin: 64 ビット
コマンド プロンプト: デフォルトのコード ページ 936

構成:

  • zh_CN.UTF-8ほとんどの人が望むように Cygwin のロケールを設定します
  • 出力エンコーディングとして UTF-8を使用するように追加Locale=zh_CNします。Charset=UTF-8.minttyrcmintty
  • cmd /c chcp 65001に追加.bashrc

、、などipconfigのDOS コマンドをで直接実行できるようになりました。bash にログインするたびに、出力エンコーディングが一時的に UTF-8 に変更されたことを意味するメッセージが表示されます。taskkillhelp.exeformat.comminttylessgrepActive code page: 65001cmd.exe

のコード ページがcmd.exe65001 に変更されると、cmd.exeはヒント テキスト言語として中国語を使用しなくなり (代わりに英語)、中国語のディレクトリもサポートされなくなります。これは の欠陥でcmd.exeあり、 とは関係ありませんmintty。何とか、cp65001 では出力できないmintty漢字を出力することができました。cmd.exeとにかく、これを説明することはできません。

cygwin のロケールを設定するには、次のコードを に追加します.bashrc

export LC_ALL=zh_CN.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

関連項目:
Windows コマンド ラインの Unicode 文字 - どのように?
私のアプリケーションは国際文字を印刷しますが、灰色のボックスしか表示されません

于 2014-11-18T07:39:53.860 に答える
0

http://cygwin.com/faq-nochunks.html#faq.using.weirdchars

ここの漢字が原因です。

Text の Terminal Options を変更し、文字セットを「GBK」に設定します。できます。

于 2012-05-11T07:42:42.223 に答える