String 带编码的Unicode和字符串
为什么这样做有效:String 带编码的Unicode和字符串,string,unicode,encoding,utf-8,python-2.5,String,Unicode,Encoding,Utf 8,Python 2.5,为什么这样做有效: a = 'a'.encode('utf-8') print unicode(a) >>> u'a' 这会给我一个错误: b = 'b'.encode('utf-8_sig') print unicode(b) 说明:>>UnicodeDecodeError:“ascii”编解码器无法解码位置0:ordinal不在范围(128)内的字节0xef,因为您尚未告诉unicode要使用什么编码: >>> a = 'a'.encode('utf-
a = 'a'.encode('utf-8')
print unicode(a)
>>> u'a'
这会给我一个错误:
b = 'b'.encode('utf-8_sig')
print unicode(b)
说明:
>>UnicodeDecodeError:“ascii”编解码器无法解码位置0:ordinal不在范围(128)内的字节0xef
,因为您尚未告诉unicode
要使用什么编码:
>>> a = 'a'.encode('utf-8')
>>> print unicode(a)
a
>>> b = 'b'.encode('utf-8_sig')
>>> print unicode(b)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print unicode(b)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
>>> print unicode(b, 'utf-8_sig')
b
a='a'。编码('utf-8')
>>>打印unicode(a)
A.
>>>b='b'。编码('utf-8_-sig')
>>>打印unicode(b)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印unicode(b)
UnicodeDecodeError:“ascii”编解码器无法解码位置0:序号不在范围(128)中的字节0xef
>>>打印unicode(b,‘utf-8_-sig’)
B
因为您没有告诉
unicode
使用什么编码:
>>> a = 'a'.encode('utf-8')
>>> print unicode(a)
a
>>> b = 'b'.encode('utf-8_sig')
>>> print unicode(b)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print unicode(b)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
>>> print unicode(b, 'utf-8_sig')
b
a='a'。编码('utf-8')
>>>打印unicode(a)
A.
>>>b='b'。编码('utf-8_-sig')
>>>打印unicode(b)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印unicode(b)
UnicodeDecodeError:“ascii”编解码器无法解码位置0:序号不在范围(128)中的字节0xef
>>>打印unicode(b,‘utf-8_-sig’)
B
因为您没有告诉
unicode
使用什么编码:
>>> a = 'a'.encode('utf-8')
>>> print unicode(a)
a
>>> b = 'b'.encode('utf-8_sig')
>>> print unicode(b)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print unicode(b)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
>>> print unicode(b, 'utf-8_sig')
b
a='a'。编码('utf-8')
>>>打印unicode(a)
A.
>>>b='b'。编码('utf-8_-sig')
>>>打印unicode(b)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印unicode(b)
UnicodeDecodeError:“ascii”编解码器无法解码位置0:序号不在范围(128)中的字节0xef
>>>打印unicode(b,‘utf-8_-sig’)
B
因为您没有告诉
unicode
使用什么编码:
>>> a = 'a'.encode('utf-8')
>>> print unicode(a)
a
>>> b = 'b'.encode('utf-8_sig')
>>> print unicode(b)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print unicode(b)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
>>> print unicode(b, 'utf-8_sig')
b
a='a'。编码('utf-8')
>>>打印unicode(a)
A.
>>>b='b'。编码('utf-8_-sig')
>>>打印unicode(b)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印unicode(b)
UnicodeDecodeError:“ascii”编解码器无法解码位置0:序号不在范围(128)中的字节0xef
>>>打印unicode(b,‘utf-8_-sig’)
B
“ascii”编解码器无法解码字节0xef
说明两件事:
unicode(b)
使用ascii
(sys.getdefaultencoding()
)字符编码\xef
字节不在ascii范围内。它是“utf-8-sig”编码(在Windows上使用)引入的第一个字节'a'
bytestring是ascii<编码>'a'。编码('utf-8')相当于'a'。解码(sys.getdefaultencoding())。编码('utf-8')
,在这种情况下,它等于'a'
本身
通常,使用bytestring.decode(character\u encoding)=unicode\u string
和unicode\u string.encode(character\u encoding)=bytestring
。bytestring是一个字节序列。Unicode字符串是Unicode代码点的序列
不要在ByTestRing上调用
.encode()
<代码>'a'是Python 2中的ByTestString文本u'a'
是Unicode文字。'ascii'编解码器无法解码字节0xef
说明两件事:
unicode(b)
使用ascii
(sys.getdefaultencoding()
)字符编码\xef
字节不在ascii范围内。它是“utf-8-sig”编码(在Windows上使用)引入的第一个字节'a'
bytestring是ascii<编码>'a'。编码('utf-8')相当于'a'。解码(sys.getdefaultencoding())。编码('utf-8')
,在这种情况下,它等于'a'
本身
通常,使用bytestring.decode(character\u encoding)=unicode\u string
和unicode\u string.encode(character\u encoding)=bytestring
。bytestring是一个字节序列。Unicode字符串是Unicode代码点的序列
不要在ByTestRing上调用
.encode()
<代码>'a'是Python 2中的ByTestString文本u'a'
是Unicode文字。'ascii'编解码器无法解码字节0xef
说明两件事:
unicode(b)
使用ascii
(sys.getdefaultencoding()
)字符编码\xef
字节不在ascii范围内。它是“utf-8-sig”编码(在Windows上使用)引入的第一个字节'a'
bytestring是ascii<编码>'a'。编码('utf-8')相当于'a'。解码(sys.getdefaultencoding())。编码('utf-8')
,在这种情况下,它等于'a'
本身
通常,使用bytestring.decode(character\u encoding)=unicode\u string
和unicode\u string.encode(character\u encoding)=bytestring
。bytestring是一个字节序列。Unicode字符串是Unicode代码点的序列
不要在ByTestRing上调用
.encode()
<代码>'a'是Python 2中的ByTestString文本u'a'
是Unicode文字。'ascii'编解码器无法解码字节0xef
说明两件事:
unicode(b)
使用ascii
(sys.getdefaultencoding()
)字符编码\xef
字节不在ascii范围内。它是“utf-8-sig”编码(在Windows上使用)引入的第一个字节'a'
bytestring是ascii<编码>'a'。编码('utf-8')相当于'a'。解码(sys.getdefaultencoding())。编码('utf-8')
,在这种情况下,它等于'a'
本身
通常,使用bytestring.decode(character\u encoding)=unicode\u string
和unicode\u string.encode(character\u encoding)=bytestring
。bytestring是一个字节序列。Unicode字符串是Unicode代码点的序列
不要在ByTestRing上调用
.encode()
<代码>'a'是Python 2中的ByTestString文本u'a'
是一种Unicode文字。Unicode使用的是“utf-8”bei默认值还是我在第一期中没有收到错误的原因?'a'