Sublime報Decode error - output not utf-8 or cp936 錯誤的解決辦法

hustsselbj發表於2015-06-11
使用Sublime在build python程式時,有時候會遇到Decode error -output not utf-8或者是cp936。原因是python編譯執行後的流的編碼方式和Sublime的解碼方式不同,Sublime Ctrl+B build一個python程式時,輸出output not cp936,說明Sublime中的Python build預設接收的編碼是cp936,如果你的python 程式是utf-8編碼,有漢字輸出時,Sublime就會報not cp936的錯誤。
如果報的是output not utf-8,說明python在編譯執行原始碼後預設將輸出結果以cp936編碼傳送給Sublime。而Sublime中的預設接收編碼是utf-8。Sublime Text在接收到python輸出後,試圖以utf-8編碼cp936編碼的流。當cp936編碼的流中沒有中文字元時,用utf-8解碼不會出錯,當cp936編碼的流中有中文字元時,因為漢子集在cp936與utf-8的編碼不相容,所以用utf-8解碼就會報錯。
解決問題的關鍵就是弄明白你的python程式的編碼和Sublime的python  build中指定的編碼。
python   sublime     decode error
cp936    utf-8         output not utf-8
utf-8      cp936       output not cp936
比如,你的python程式碼中制定了編碼格式是utf-8,現在sublime報錯了output not cp936的錯誤,則設定Sublime中python build編碼格式為utf-8,反之亦然。
Python.sublime-build 位置:
Sublime  Text 2 : SublimeText2/Data/Packages/Python/ Python.sublime-build
Sublime Text 3 :SublimeText3/Packages/Python.sublime-package 
或者是新建一個build檔案:工具->編譯系統->新建編譯系統,儲存為Python.sublime-build,我的檔案是儲存在了C:\Program Files (x86)\Sublime Text\Data\Packages\User\ 中。
{
    "cmd": ["python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
    "encoding":"utf-8"
}

參考:

相關文章