2019年5月22日 星期三

code page 950 & code page 65001


Python 程式內的字串都是以 Unicode 方式儲存,當輸出到 Terminal 上面時,Python 會檢查終端機使用的編碼,並將 Unicode 字串轉成 Terminal 支援的編碼,當我們在 Linux 下執行時會轉換成 UTF8,但如果是在 Windows 的命令提示字元下執行 Python,則會轉成所謂的 CP950 編碼,在這個轉換的過程中發生錯誤,但如果今天你直接將字串存成檔案或做其他操作,是不會有問題的。

解決方法有兩種,你可以將命令提示字元的編碼設為 UTF8,或是在 Python 輸出之前先將字串編碼成 CP950 並忽略錯誤字元,個人建議將命令提示字元的編碼設為 UTF8,雖然每次開啟命令提示字元都要重設一次,但如果從程式端為 Windows 做調整,這支程式要跨平台使用時反而可能出問題。

在命令提示字元輸入這段指令,即可將編碼設為 UTF8,但每次開啟命令提示字元都要再輸入一次:

chcp 65001(65001 是 UTF8 的編號)
 
如果你希望從 Python 下手,則可以參考以下範例:

s = "Hello 你好"
print(s.encode("utf8").decode("cp950", "ignore"))


沒有留言:

張貼留言