开发者

Encoding a string to ascii

I have a long string that I w开发者_如何学Cant to encode to ascii. I'm doing:

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

but I get:

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

(I've also tried 'ignore' but it doesn't help.)

What am I doing wrong?


Your string is already encoded with some encoding. Before encoding it to ascii, you must decode it first.

Python is implicity trying to decode it (That's why you get a UnicodeDecodeError not UnicodeEncodeError).

You can solve the problem by explicity decoding your bytestring (using the appropriate encoding) before trying to reencode it to ascii.

Example:

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

Use the correct encoding your string was encoded in first place, instead of 'some_encoding'.

You have to know which encoding a string is using before you can decode it. Where did you get the string from?


encode should be used on unicode objects to convert it to a str. If you have a str object, you should use decode to convert it to a unicode.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜