myString = 'éíěřáé'
我需要將此字符串解碼爲unicode。 以下兩種方法之間是否有區別?string.decode()與unicode(字符串)
myString.decode(encoding='UTF-8', errors='ignore')
和
unicode(myString, encoding='UTF-8', errors='ignore')
myString = 'éíěřáé'
我需要將此字符串解碼爲unicode。 以下兩種方法之間是否有區別?string.decode()與unicode(字符串)
myString.decode(encoding='UTF-8', errors='ignore')
和
unicode(myString, encoding='UTF-8', errors='ignore')
的unicode
構造函數可以從字符串分開採取其他類型:
>>> unicode(10)
u'10'
對於字節串的情況下,然而,這兩種形式的大多是等價的。一些編碼選項是無效的unicode
構造,因爲它們不會導致unicode的輸出,但有效期爲字節串的.decode
方法,如'hex'
:
>>> unicode('10', encoding='hex')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: decoder did not return an unicode object (type=str)
在Python 2.x的str.decode()
否則可能引起一個unicode對象或另一個str
。 unicode()
函數僅適用於導致unicode對象的編碼。
例如:
>>> "x\x9cKLJ\x06\x00\x02M\x01'".decode('zip')
'abc'
>>> unicode("x\x9cKLJ\x06\x00\x02M\x01'", encoding='zip')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: decoder did not return an unicode object (type=str)
>>>
需要注意的是在內部,他們以同樣的方式都作爲調用unicode()
是表明它沒有真正解碼的對象,然後才反對的結果的類型。
他們本質上是一樣的,但在這兩種情況下都有一些小的表現捷徑; str.decode
知道它的參數是一個字符串,因此它可以快速檢查其參數的類型,而unicode.__new__
具有包括UTF-8的一些常用編碼的快捷方式。
在一般情況下,兩種方法都調用PyCodec_Decode
。