myString = 'éíěřáé'
この文字列をデコードしてユニコードにする必要があります。 一般的に、これら2つの方法の間には、使用法の違いがありますか?string.decode()とunicode(string)との比較
myString.decode(encoding='UTF-8', errors='ignore')
と
unicode(myString, encoding='UTF-8', errors='ignore')
myString = 'éíěřáé'
この文字列をデコードしてユニコードにする必要があります。 一般的に、これら2つの方法の間には、使用法の違いがありますか?string.decode()とunicode(string)との比較
myString.decode(encoding='UTF-8', errors='ignore')
と
unicode(myString, encoding='UTF-8', errors='ignore')
unicode
コンストラクタは離れた文字列から他のタイプを取ることができる:バイト文字列の場合について
>>> unicode(10)
u'10'
が、しかし、2つの形態がほとんど同等です。いくつかのエンコードオプションは、彼らがUnicodeの出力をもたらさないようunicode
コンストラクタに対して有効ではありませんが、そのような'hex'
などバイト文字列の.decode
方法で有効です:Pythonの2.xのstr.decode()
で
>>> 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)
のいずれかをもたらすことができますユニコードオブジェクトまたは別のもの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)
>>>
注意。
これらは本質的に同じですが、どちらの場合でもパフォーマンスのわずかなショートカットがあります。 str.decode
はその引数が文字列であることを知っているので、その引数のショートカット型チェックが可能ですが、unicode.__new__
にはUTF-8を含むいくつかの一般的なエンコーディングのショートカットがあります。
どちらの方法も一般的にPyCodec_Decode
を呼び出します。