将字符串编码为ascii

时间:2009-11-19 11:09:32

标签: python encoding ascii

我有一个长字符串,我想编码为ascii。我在做:

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

但我明白了:

'ascii' codec can't decode byte 0xc3 in position 2646: ordinal not in range(128)

(我也试过'ignore',但没有帮助。)

我做错了什么?

2 个答案:

答案 0 :(得分:14)

您的字符串已经编码并带有一些编码。在将其编码为ascii之前,必须先解码

Python 隐含 尝试对其进行解码(这就是为什么你得到UnicodeDecodeError而不是UnicodeEncodeError)。

您可以通过明确解码您的bytestring (使用适当的编码) 尝试将其重新编码为ascii来解决问题。

示例:

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

首先使用您的字符串编码的正确编码,而不是'some_encoding'

在解码字符串之前,您必须知道字符串正在使用哪种编码。你从哪里得到了字符串?

答案 1 :(得分:1)

应在encode个对象上使用

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