Sublime Text 2/3 [Decode error - output not utf-8]
問題:
Sublime Text 在build Python時,如果python原始碼裡有中文,例如“print(‘中文’)”,Sublime Text 會報
[Decode error - output not utf-8]
分析:
在Sublime Text裡,新建一個python原始碼檔案,內容為:
1
2
3
|
import sys print (sys.stdin.encoding) print (sys.stdout.encoding) |
ctrl + B build該檔案。預設輸出應該是:
1
2
|
cp936 cp936 |
這意味著,python在編譯執行原始碼後,預設將輸出結果以cp936編碼,傳送給Sublime Text。而Sublime Text 中python build的預設接收編碼是UTF-8。Sublime Text在接收到python輸出後,試圖以utf-8解碼cp936編碼的流。當cp936編碼的流中沒有漢字時,因為英文字符集在cp936和utf-8中的編碼相容,所以用utf-8解碼不會出錯;當cp936編碼的流中有漢字時,因為漢字字符集在cp936與utf-8的編碼不相容,所以用utf-8解碼就會錯誤。
最終Sublime Text就會報[Decode error - output not utf-8]錯誤。
解決:
方法1. Python有個PythonIoEncoding環境變數,用來定義stdin/stdout/stderr的編碼。
windows下,cmd中執行python -h 可以看到該環境變數的說明。
所以可以在環境變數下,新增一個環境變數pythonioencoding,值為utf-8,即可解決該問題。
方法2.修改Sublime Text的python build的設定。將其編碼設定為cp936。
開啟Python.sublime-build檔案,並新增"encoding":"cp936"這一行,儲存即可
PS:Python.sublime-build 位置:
Sublime Text 2 : SublimeText2\Data\Packages\Python\Python.sublime-build
Sublime Text 3 :SublimeText3\Packages\Python.sublime-package
Python.sublime-package 實質為zip壓縮包,更改字尾名,解壓縮後即可找到Python.sublime-build。修改後,再重新打包成Python.sublime-package替換即可。
轉載自:http://my.oschina.net/sunchp/blog/346738
相關文章
- Sublime Text: [Decode error - output not utf-8]Error
- Sublime text 2/3 [Decode error - output not utf-8] 完美解決方法Error
- sublime Text3編譯java檔案提示Decode error - output not utf-8編譯JavaError
- sublime 出現 [Decode error - output not utf-8]Error
- 用sublime Text3編譯java檔案提示Decode error - output not utf-8編譯JavaError
- Sublime Text 2報 Decode error - output not utf-8 錯誤的解決辦法Error
- Sublime Text 2報“Decode error - output not utf-8”錯誤的解決辦法Error
- sublime text編譯時提示錯誤[Decode error - output not utf-8] compilation terminated編譯Error
- 使用 Sublime 工具時報Decode error - output not utf-8解決辦法Error
- sublime上配置java環境,解決Decode error - output not utf-8問題JavaError
- Sublime下python 報錯[Decode error - output not utf-8]解決辦法PythonError
- cx_Oracle.DatabaseError: [Decode error - output not utf-8]OracleDatabaseError
- Sublime報Decode error - output not utf-8 or cp936 錯誤的解決辦法Error
- [Decode error - output not utf-8] lua 使用string.subError
- python編碼問題之——Decode error - output not utf-8PythonError
- Could not decode a text frame as UTF-8 的解決
- Sublime Text 3 快捷鍵總結
- [sublime系列文章] sublime text 3如何設定巨集
- windows版 Sublime Text 2 快捷鍵Windows
- YUI Compressor for Sublime text2UI
- MacOS Sublime Text 3 安裝使用 Sublime-phpcs 外掛MacPHP
- sublime text3 好用的外掛
- sublime Text3 前端常用外掛前端
- sublime text3外掛安裝
- sublime text 3 自制快速程式碼片段
- Sublime Text3—常用外掛Emmet
- Sublime Text3—系統設定
- Sublime Text3—Project(專案管理)Project專案管理
- 使用 Sublime Text 3 編譯 C 語言編譯
- Sublime Text 3 下載安裝及配置
- Sublime Text 3 的微信小程式外掛!微信小程式
- sublime text 3繫結lua編譯器編譯
- Sublime Text2 Svn設定問題
- Sublime Text 2 設定檔案詳解
- 如何開發 Sublime Text 2 的外掛
- 2014 年 9 個最好的 Sublime Text 2/3 主題
- Sublime Text全程指南
- mount error(5): Input/output errorError