Python的中文處理

期末專題時遇到的困難之一,我是邊試邊查,可能沒有完整理解,如果有不正確的地方請各位務必指正。我使用的python版本是2.6.5,聽說3以後不太一樣,沒實際用過就是。

回歸正題,一般而言python的String儲存方式有兩種,分別為"字元格式(8-bit strings)"跟"Unicode格式(Unicode objects)" ,也就是我們熟悉的Big5跟UTF-8,就中文的話,兩種都能用,但必須注意用法,程式碼如下。

所以,當我們想在python裡面用中文時,不論是不是unicode,都必須用專門的input, output來做。像是sys.stdout, sys.stdin, codecs等等。但有些國外網站上或書上sample code為簡便起見,通常沒有特別處理字串,甚至連有些framework都沒有,不過django是沒問題的,他本身就是支援多國語系,我自己用也是,頂多在不同OS平台或SQL Server需要特別設定。

常見錯誤

  • 用錯格式,用unicode格式存在big5字串裡,或反之,印出來會變亂碼。
  • 編碼必須指定,不然會用系統預設編碼。

在PIL裡面處理中文

 PIL(Python Imaging Library)是個python處理影像的Library,不幸地,這個畫圖用的Libaray是特別沒有處理文字問題的。

跟百度那篇(Reference 4)解決方式不太一樣,我是將系統編碼換成UTF-8,而且所有字串也換城UTF-8來解決。換句話說,就是把看的到能做成unicode的地方都設定成UTF-8。還有有些字型大小會印不出來,會變成方塊符號 □ 。

 reference: