我永久收到以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 27: ordinal not in range(128)
我已经尝试过了
x.encode("ascii", "ignore")
x.encode("utf-8")
x.decode("utf-8")
然而,没有任何作用。
您必须在源头找出该字符的编码。
我猜这是 ISO-8859-1(欧洲语言),在这种情况下它是“ä”,但你应该检查一下。也可以是西里尔文或希腊文。
请参阅 http://en.wikipedia.org/wiki/ISO/IEC_8859-1,了解此编码中字符的完整列表。
使用此信息,您可以要求 Python 对其进行转换:
在 Python 2.7 中
>>> s = '\xe4'
>>> t = s.decode('iso-8859-1')
>>> print t
ä
>>> for c in t:
... print ord(c)
...
228
>>> u = t.encode('utf-8')
>>> print u
ä
>>> for c in bytes(u):
... print ord(c)
...
195
164
String
t
在 Python 中以 ISO-8859-1 进行内部编码。字符串 u
在内部以 UTF-8 编码,并且该字符在 UTF-8 中占用 2 个字节。另请注意,print
指令“知道”如何显示这些不同的编码。
我想使用Python发送电子邮件。 连接.登录(用户=我的电子邮件,密码=我的密码)
不幸的是我在密码中使用了“ä”。
现在我遇到了上面描述的错误。用utf-8编码并不能解决问题。
response = encode_base64(initial_response.encode('ascii'), eol='')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError:“ascii”编解码器无法对位置 21 中的字符“\xe4”进行编码:序数不在范围(128)中
有什么想法吗?