我在 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())
Last modified: 2020-07-01

Author

Comments

Write a Reply or Comment

Your email address will not be published.