【发布时间】:2016-12-17 09:18:05
【问题描述】:
我正在尝试使用 python 3.5.1 在 OSX 上运行一个非常简单的示例,但我真的被卡住了。已经阅读了很多处理类似问题的文章,但我无法自己解决这个问题。您对如何解决此问题有任何提示吗?
我希望得到 mylist 中定义的正确编码的 latin-1 输出,没有任何错误。
我的代码:
# coding=<latin-1>
mylist = [u'Glück', u'Spaß', u'Ähre',]
print(mylist)
错误:
Traceback (most recent call last):
File "/Users/abc/test.py", line 4, in <module>
print(mylist)
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 4: ordinal not in range(128)
如何修复错误,但 stdout(打印)仍然有问题:
mylist = [u'Glück', u'Spaß', u'Ähre',]
for w in mylist:
print(w.encode("latin-1"))
我得到的输出:
b'Gl\xfcck'
b'Spa\xdf'
b'\xc4hre'
“语言环境”向我展示了什么:
LANG="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_CTYPE="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_ALL=
什么 -> 'python3' 向我展示:
Python 3.5.1 (default, Jan 22 2016, 08:54:32)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
【问题讨论】:
-
在我的 python 3.4 windows 版本上运行良好:mylist = [u'Glück', u'Spaß', u'Ähre',] for w in mylist: print(w) output: Glück Spaß Ähre所以这里没问题。请注意,如果您使用
encode,您会得到bytes类型,而不是您想要的类型。
标签: python-3.x iso-8859-1 python-unicode