1. 程式人生 > >UnicodeEncodeError: 'gbk' codec can't encode character '\xc4' 這類問題之解決

UnicodeEncodeError: 'gbk' codec can't encode character '\xc4' 這類問題之解決

問題描述

在看書籍《Mark Lutz. Learning Python. 5ed. O’Reilly 2013》的106頁的一個例子時,如下:

>>> print('sp\xc4m')

在我的win7電腦的cmd console中以互動式的方式執行,不僅得不到與書中相同的結果,反而得到以下錯誤:

UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xc4’

在網上搜索了半天,前前後後折騰了2個多小時,始終沒有解決。按網上的各種解決方法,都不奏效。

實際上,上述問題我兩年前即已碰到。當時,該書剛剛出版沒多久,也是看該例子的時候,與書上的執行結果不一致,且出現報錯。我把出現錯誤的原因歸為中文作業系統的緣故,因為該書是2013年出版的英文原版書,書的作者在寫該書前,必定用的是英文的作業系統。

解決方案

晚上回到休息的酒店,就登入了anaconda的最新下載頁面,發現Anaconda已經更新到4.4.0版本了。自己在備課的過程中已經發現math庫增加了兩個常量,相比Python 3.4.4來說,分別為math.inf和math.nan。何不就裝一個新版本的Anaconda試試。

特別注意,我原來使用的Anaconda版本及Python版本如下:

  • Anaconda 4.0.0
  • Python 3.4.4

我新安裝的版本為:

  • Anaconda 4.4.0
  • Python 3.6.1
    我再次執行書中的例子如下:
    這裡寫圖片描述
    發現與書中的執行結果完全一致,問題得以解決。

結論

由此可知,最新版本的Python 3.6.1完美地解決了以前版本中的處理unicode字元的bug問題,在直接支援Unicode字元處理方面的能力得到了增強。