2016/02/26

windows下執行Python出現UnicodeEncodeError錯誤

最近決定放棄R改用Python。在WIN 7安裝了Python 3.5,想說執行程式測看看。拿了結巴分詞的範例執行,沒想到出現以下的錯誤
UnicodeEncodeError: 'cp950' codec can't encode character '\u6765' in position 14: illegal multibyte sequence

嘗試了一下,發現是因為範例程式中有簡體中文。當我把簡體中文換成正體中文,就正常可執行。

想說Python支援Unicode,我的檔案也確定是Unicode編碼,怎會有這種錯誤?查了一下,嘗試了幾種作法依舊無法解決。還有人提到是windows的問題,無解決方案…

一時間無法解決,乾脆繞過改用VM。於是乎在自己的FreeBSD上安裝Python。

沒想到,在FreeBSD執行也出現類似的訊息…
UnicodeEncodeError: 'ascii' codec can't encode character '\u6211' in position 11: ordinal not in range(128)

看來,之前的問題應該WIN7應該不是主要因素。再度查了一下,原來是環境設定的問題~
執行以下指令,就可在FreeBSD下正常執行
setenv LC_ALL zh_TW.UTF-8

於是乎,想說windows下的錯誤,應該也是一樣的狀況吧?
查了一下如何改CMD的編碼方式,原來有個chcp指令可改變編碼(code page)

chcp有兩個功能
  1. 顯示目前編碼
  2. 設定編碼
我要調整windows console成UTF-8 Unicode,作法如下
chcp 65001
註:設定後,請記得在CMD中選內容/字形,修改字型

如此,就可以正常的在windows下執行結巴分詞的範例程式了~

參考資料

沒有留言:

Related Posts Plugin for WordPress, Blogger...