Python3 遇到下述問題:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0–9: ordinal not in range(128)
此錯誤訊息,要怎麼解決呢?
一般這個都在 Python2 看到,沒想到在 Python3 也會遇到.. @.@a..
Python3 遇到 UnicodeEncodeError: ascii codec 錯誤解法
最簡單的解法,直接於 Bash shell 指定編碼為 utf-8 即可,如下述:
- $ export PYTHONIOENCODING=utf-8
再來執行就不會有問題了~
但是若遇到設定為 UTF-8 後,原本某些又不能跑,需要設定回來,原本預設編碼為何呢?
可以使用此程式查看:
- vim print_encode.py
#!/usr/bin/env python3 import sys print(sys.getdefaultencoding()) print(sys.stdin.encoding) print(sys.stdout.encoding) print(sys.stderr.encoding)
- python3 ./print_encode.py
utf-8
ANSI_X3.4-1968
ANSI_X3.4-1968
ANSI_X3.4-1968
註:最快回到預設值得作法,就是直接將 PYTHONIOENCODING unset 掉就好
- unset 語法:$ unset PYTHONIOENCODING