我正在尝试使用 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'
原文由 Hans Bondoka 发布,翻译遵循 CC BY-SA 4.0 许可协议
删除字符
<
和>
:这些字符通常在示例中用于指示编码名称的位置,但文字字符
<
和>
不应包含在您的文件中。为此,您的 文件 必须使用 latin-1 进行编码。如果您的文件实际上是使用 utf-8 编码的,则编码行应该是
例如,当我运行此脚本时(保存为具有 latin-1 编码的文件):
我得到这个输出(没有错误):
该输出看起来是正确的。例如,ü 的 latin-1 编码是
'\xfc'
。我使用我的编辑器以 latin-1 编码保存文件。文件的十六进制内容为:
请注意,第三行(即位置 0x20 处的字符)的第一个字节(以十六进制表示)是
fc
。那是 ü 的 latin-1 编码。如果 文件 使用 utf-8 编码,则字符 ü 将使用两个字节表示,c3 bc
。