将字符串编码为ASCII

15

我有一个很长的字符串,我想将其编码为ascii码。我正在执行以下操作:

s = s.encode('ascii', 'replace')

但是我得到了:
'ascii' codec can't decode byte 0xc3 in position 2646: ordinal not in range(128)

我也尝试过使用'ignore',但并没有帮助。
我做错了什么?
2个回答

22

你的字符串已经使用某种编码进行了编码。在将其编码为ascii之前,你必须首先对其解码

Python正试图隐式地对其进行解码(这就是为什么会出现UnicodeDecodeError而不是UnicodeEncodeError)。

你可以通过显式解码你的字节字符串(使用适当的编码)在尝试重新编码为ascii之前来解决这个问题。

例如:

s = s.decode('some_encoding').encode('ascii', 'replace')

首先要使用正确的编码方式来解码你最初编码过的字符串,而不是使用'some_encoding'

在对字符串进行解码之前,你必须知道它使用的是哪种编码方式。你从哪里获取这个字符串的呢?


2

encode应该用于unicode对象,将其转换为str。 如果您有一个str对象,则应使用decode将其转换为unicode


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接