#

好像滿多人都有遇到了「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

好了只要依照上面的步驟處理,應該就不會有中文亂碼的問題了。

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates