使用 Python 2.7
我正在编写一个抽象的网络抓取工具,并且在显示(打印)某些字符时遇到问题。
我得到了回溯错误:UnicodeEncodeError: 'ascii' codec can't encode character u'\u2606' in position 5: ordinal not in range(128)
从打印包含该字符的字符串。
我使用 locale 模块来查找我的操作系统支持的设置,虽然我不确定我是否应该使用 locale 来解决我的问题,并注意到默认设置 where (en_US', 'cp1252')
. 我正在尝试将其更改为('en_US', 'utf-8')
但遗憾的是无济于事。
#code for default settings
print locale.getdefaultlocale()
这是我用来缩小语言环境设置选项的代码。(这里没有问题,代码只是让任何想要的人都可以跟随)
import locale
all = locale.locale_alias().items()
utfs = [(k,v) for k,v in all if 'utf' in k.lower() or 'utf' in v.lower()]
# utf settings starting with en
en_utfs = [(k,v) for k,v in utfs if k.lower()[:2].lower() == 'en' or
v.lower()[:2] == 'en'
print en_utfs
这给出了输出:
[('en_ie.utf8@euro', 'en_IE.UTF-8'), ('universal.utf8@ucs4', 'en_US.UTF-8')]
这是我的问题所在;尝试将设置更改为en_US.UTF-8
.
[IN]: locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' )
[OUT]: Traceback code ...
[OUT]: locale.Error: unsupported locale setting
对不起所有的代码,出于某种原因,我觉得有必要这样做。