我在Win7-64bit上使用cygwin,並將「zh_CN.UTF-8」作爲默認語言環境設置。 有時,一些cygwin的版本輸出的只是不能壞編碼讀到這樣如下:cygwin的一些輸出只能讀取不好的編碼?
[junit] ▒▒▒▒: ▒Ҳ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ can't
任何想法?謝謝。
我在Win7-64bit上使用cygwin,並將「zh_CN.UTF-8」作爲默認語言環境設置。 有時,一些cygwin的版本輸出的只是不能壞編碼讀到這樣如下:cygwin的一些輸出只能讀取不好的編碼?
[junit] ▒▒▒▒: ▒Ҳ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ can't
任何想法?謝謝。
儘管sharajava自己找到了解決方案,但我不得不說這個解決方案對我來說並不是非常可取的。問題是,如果將文本的終端選項(實際上「CharSet」爲mintty
)更改爲「GBK」,屏幕上將顯示UTF-8字符的內容?他們將是混亂,不可讀的代碼。我對VIM進行了實驗,無論是其中文歡迎文本還是包含中文字符的UTF-8編碼源代碼都顯示爲不可讀代碼。對我來說這是不可接受的,或者我猜,大多數人都不能接受。
最後,我想出了一種避免Windows命令提示符(即cmd.exe
)的缺陷並啓用運行DOS命令而不受雜亂代碼影響的方法。這是我的解決方案,它可能會有所幫助。
測試環境:
OS:Win7的64位中國簡體
Cygwin的:64位
命令提示符:默認的代碼頁936
配置:
zh_CN.UTF-8
由於大多數人的需要Locale=zh_CN
和Charset=UTF-8
到.minttyrc
ma王mintty
使用UTF-8編碼輸出cmd /c chcp 65001
到.bashrc
現在你可以運行DOS命令ipconfig
,taskkill
,help.exe
和format.com
等直接mintty
,即使在使用Linux命令,例如伴侶如less
,grep
。每次你用bash登錄時,它都會告訴你Active code page: 65001
意思是cmd.exe
的輸出編碼已經暫時改爲UTF-8。
當代碼頁cmd.exe
更改爲65001時,cmd.exe
將不再使用中文作爲提示文本語言(英文代替),並且中文目錄也不受支持。這是cmd.exe
的缺陷,與mintty
無關。不知何故,mintty
設法輸出中文字符cmd.exe
與cp65001不能。我無法解釋這一點,無論如何,它的工作原理。
要設置的cygwin的區域,您可以添加以下代碼到你的.bashrc
:
export LC_ALL=zh_CN.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
參見:
Unicode characters in Windows command line - how?
My application prints international characters but I only see gray boxes
最後我找到了一個解決方案,謝謝。我可以確認它也適用於瑞典編碼('sv_SE.UTF-8')的win 7,但我不必將LC_ALL或LC_CTYPE設置爲空,LANG設置爲sv_SE.UTF -8'由cygwin從安裝。 – 244an
剛剛得到解決。 http://cygwin.com/faq-nochunks.html#faq.using.weirdchars更改文本的終端選項,選擇字符集爲「GBK」。 – sharajava