2011/03/04

Python 2.6 Tk 中文亂碼問題解決方法

  在 Windows XP 想使用 Python 及 Tk 來開發圖形介面程式時針對中文字顯示都會變成亂碼,試了幾個方法後發現以下這個方法是較可行,提供給大家參考。
第一點:程式開頭一定要加底下這行編號宣告 # -*- coding:utf-8 -*- 
第二點: 字串要用在 Tk 元件上的一定要宣告成字串變數,字串中可以有許功蓋之類的字,但這些字不能在開頭及結尾 str1 = "Hello world ! 中文字成功顯示在 Tk" 
第三點: 設定 Tk 元件文字屬性時再強制設定編碼為 UTF-8 widget = Button(text=str1.encode("UTF-8"), padx=20, pady=20)
 以下是一個簡單的範例 :
# -*- coding: utf-8 -*- 
from Tkinter import * 
 class Hello(Frame): def __init__(self, parent=None): 
 Frame.__init__(self, parent) self.pack() self.make_widgets() 
 def make_widgets(self): # widget = Button(self, text=str1, command=self.quit) # 不能在 Windows 中正常顯示中文字. str1 = "Hello world ! 中文字成功顯示在 Tk" widget = Button(text=str1.encode("UTF-8"), padx=20, pady=20) widget.pack(padx=20, pady=20) widget.config(cursor='gumby') widget.config(bd=8, relief=RAISED) widget.config(bg='dark green', fg='white') widget.pack(side=LEFT) if __name__ == '__main__': Hello().mainloop()   

相同的程式在Ubuntu 11.04 Alpha 版中的 Python 2.7.1 就沒有這個問題,只要用以上第一點的編碼設定即可,不用針對中文字串再 encode .

2023/01/01 macOS 上安裝的是Python 3.9.13 沒有這個中文顯示問題。就算沒有一開始指定utf-8:

      # -*- coding: utf-8 -*-