将字符串编码为ascii

Guy*_*Guy 11 python encoding ascii

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

s = s.encode('ascii', 'replace')
Run Code Online (Sandbox Code Playgroud)

但我得到:

'ascii' codec can't decode byte 0xc3 in position 2646: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

(我也尝试过,'ignore'但没有用.)

我究竟做错了什么?

nos*_*klo 16

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

Python 试图解码它是不明智的(这就是为什么你得到的UnicodeDecodeError不是UnicodeEncodeError).

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

例:

s = s.decode('some_encoding').encode('ascii', 'replace')
Run Code Online (Sandbox Code Playgroud)

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

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