2012-05-09 51 views
2

我在Win7-64bit上使用cygwin,並將「zh_CN.UTF-8」作爲默認語言環境設置。 有時,一些cygwin的版本輸出的只是不能壞編碼讀到這樣如下:cygwin的一些輸出只能讀取不好的編碼?

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

任何想法?謝謝。

+0

剛剛得到解決。 http://cygwin.com/faq-nochunks.html#faq.using.weirdchars更改文本的終端選項,選擇字符集爲「GBK」。 – sharajava

回答

5

儘管sharajava自己找到了解決方案,但我不得不說這個解決方案對我來說並不是非常可取的。問題是,如果將文本的終端選項(實際上「CharSet」爲mintty)更改爲「GBK」,屏幕上將顯示UTF-8字符的內容?他們將是混亂,不可讀的代碼。我對VIM進行了實驗,無論是其中文歡迎文本還是包含中文字符的UTF-8編碼源代碼都顯示爲不可讀代碼。對我來說這是不可接受的,或者我猜,大多數人都不能接受。

最後,我想出了一種避免Windows命令提示符(即cmd.exe)的缺陷並啓用運行DOS命令而不受雜亂代碼影響的方法。這是我的解決方案,它可能會有所幫助。

測試環境:
OS:Win7的64位中國簡體
Cygwin的:64位
命令提示符:默認的代碼頁936

配置:

  • 的Cygwin設置的地點至zh_CN.UTF-8由於大多數人的需要
  • Locale=zh_CNCharset=UTF-8.minttyrc ma王mintty使用UTF-8編碼輸出
  • 添加cmd /c chcp 65001.bashrc

現在你可以運行DOS命令ipconfigtaskkillhelp.exeformat.com等直接mintty,即使在使用Linux命令,例如伴侶如lessgrep。每次你用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

+0

最後我找到了一個解決方案,謝謝。我可以確認它也適用於瑞典編碼('sv_SE.UTF-8')的win 7,但我不必將LC_ALL或LC_CTYPE設置爲空,LANG設置爲sv_SE.UTF -8'由cygwin從安裝。 – 244an

相關問題