UnicodeEncodeError:“ascii”编解码器无法对字符 u'\xe4' 进行编码

问题描述 投票:0回答:2

我永久收到以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 27: ordinal not in range(128)

我已经尝试过了

  1. x.encode("ascii", "ignore")
  2. x.encode("utf-8")
  3. x.decode("utf-8")

然而,没有任何作用。

python encoding ascii
2个回答
15
投票

您必须在源头找出该字符的编码。

我猜这是 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
指令“知道”如何显示这些不同的编码。


0
投票

我想使用Python发送电子邮件。 连接.登录(用户=我的电子邮件,密码=我的密码)

不幸的是我在密码中使用了“ä”。

现在我遇到了上面描述的错误。用utf-8编码并不能解决问题。

response = encode_base64(initial_response.encode('ascii'), eol='')
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

UnicodeEncodeError:“ascii”编解码器无法对位置 21 中的字符“\xe4”进行编码:序数不在范围(128)中

有什么想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.