我在 windows 系統中寫了一個解析 xml 的小程式,測試沒問題後,上傳 Hostgator 的主機,執行時就出現了以下的錯誤訊息。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
windows 上的 python 版本:3.7.2
Hostgator CentOS 上的 python 版本:3.2.3
寫個小程式,檢查一下編碼狀況
import sys
print(sys.getdefaultencoding())
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding)
輸出的結果是
utf-8
ANSI_X3.4-1968
ANSI_X3.4-1968
ANSI_X3.4-1968
最快的解決方式是在 bash 中執行以下指令,就可以正常的顯示
export PYTHONIOENCODING=utf-8
另一個方式則是在程式中處理,在程式中加入以下程式碼
import codecs
import sys
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
Comments