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下執行結巴分詞的範例程式了~

參考資料

留言

匿名表示…
用估狗加上測試了好幾個禮拜
今天看到你這篇解決了我的問題
非常感謝
請受小的一拜
匿名表示…
您好,想請教我在程式執行完 出現 error: UnicodeEncodeError: 'cp950' codec can't encode character '\u4923' in position 179: illegal multibyte sequence
是在VScode執行python檔案。因為沒有open相關指令(只有print)。所以是在cmd下輸入指令: chcp65001。
也有更改VScode的編碼系統,可是還是沒有解決問題,想請教還有什麼方式可以解決嗎?謝謝。