好像滿多人都有遇到了「Tk視窗中文亂碼」的問題,如果你也有這個問題的話,這篇文章應該可以幫上一點小忙。
亂碼的原因
會造成亂碼最大的原因是因為「直譯器」及「程式檔案」採用了不同的編碼方式。 舉例來說:如果你的直譯器是跑在big5的模式下,那你的程式檔案也一定要採用big5的編碼方式,不然的話就會產生亂碼。一般我們可以用下面的步驟來解決中文亂碼的問題:
1. 查看直譯器支援的編碼
因為Tcl/Tk的直譯器有太多版本了,所以我們要先確定你安裝的直譯器有包含utf-8及big5兩種編碼,請用下面的程式來檢查:set txt [text .t] $txt insert end [encoding names] pack $txt -expand 1 -fill both
這個程式會把直譯器支援的所有編碼都列在文字方塊裡。一般來說utf-8的支援應該會包含在裡面,所以不太需要擔心。我們需要擔心的是big5的支援。請查看文字方塊裡面有沒有cp950或big5,如果沒有的話就表示不支援big5的編碼,也就是說你的程式檔案不能使用big5的方式編寫,只能改採用utf-8來編寫。請注意下圖中紅色框起來的地方:
圖 q1-1
圖中顯示在我的環境下用big5及utf-8都沒問題。
2. 檢查程式檔案的編碼
當你確定了直譯器支援的編碼後,下一步是要確定你的程式檔案是採用什麼編碼,正常情況下你應該會自己知道才對...因為程式是你寫的。如果你真的忘記的話...可以用瀏覽器打開程式,然後調整「字元編碼」的功能,看哪一種編碼會讓程式顯示正常,那就是程式檔的編碼了。3. 指定直譯器的編碼選項
確定了程式的檔案編碼後,最後一步就是要執行程式了。請在執行程式時為直譯器加上編碼選項,語法像這樣:wish.exe -encoding 程式檔案的編碼 程式檔案
或是
tclsh.exe -encoding 程式檔案的編碼 程式檔案
例如,你的程式(main.tcl)是用big5編寫的,那你要這樣啟動:
wish.exe -encoding big5 main.tcl
如果是用utf-8編寫的,那你要這樣子啟動:
wish.exe -encoding utf-8 main.tcl
好了只要依照上面的步驟處理,應該就不會有中文亂碼的問題了。
按右上方的「#」號切換側邊欄