str.encode 期望输入什么?
What does str.encode expect as input?
我希望对项目中的所有字符串使用 unicode
而不是 str
。我正在尝试使用 str.encode
方法,但无法从文档中弄清楚 encode
方法究竟做了什么或期望作为输入。
希腊小写字母pi为U+03C0,UTF-8编码为0xCF 0x80。我得到以下信息:
>>> s1 = '\xcf\x80'
>>> s1.encode('utf-8','ignore')
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
s1.encode('utf-8','ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 0: ordinal not in range(128)
我试过:
>>> s2='\x03\xc0'
>>> s2.encode('utf-8','ignore')
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
s2.encode('utf-8','ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 1: ordinal not in range(128)
encode
期望输入什么,为什么 'ignore' 选项不忽略错误?我试过 'replace' 也没有掩盖错误。
在Python2.x中,str
是字节串(已编码)。您可以将其解码为 unicode 对象:
>>> s1 = '\xcf\x80' # string literal (str)
>>> s1.decode('utf-8')
u'\u03c0'
对于unicode对象,你可以做encode:
>>> u1 = u'\u03c0' # unicode literal (unicode) U+03C0
>>> u1.encode('utf-8')
'\xcf\x80'
我希望对项目中的所有字符串使用 unicode
而不是 str
。我正在尝试使用 str.encode
方法,但无法从文档中弄清楚 encode
方法究竟做了什么或期望作为输入。
希腊小写字母pi为U+03C0,UTF-8编码为0xCF 0x80。我得到以下信息:
>>> s1 = '\xcf\x80'
>>> s1.encode('utf-8','ignore')
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
s1.encode('utf-8','ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 0: ordinal not in range(128)
我试过:
>>> s2='\x03\xc0'
>>> s2.encode('utf-8','ignore')
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
s2.encode('utf-8','ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 1: ordinal not in range(128)
encode
期望输入什么,为什么 'ignore' 选项不忽略错误?我试过 'replace' 也没有掩盖错误。
在Python2.x中,str
是字节串(已编码)。您可以将其解码为 unicode 对象:
>>> s1 = '\xcf\x80' # string literal (str)
>>> s1.decode('utf-8')
u'\u03c0'
对于unicode对象,你可以做encode:
>>> u1 = u'\u03c0' # unicode literal (unicode) U+03C0
>>> u1.encode('utf-8')
'\xcf\x80'