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'