unicode
テキストを処理するためのものです。テキストは、1 バイトよりも大きいコード ポイントのシーケンスです。テキストを特定のエンコーディングでエンコードして、テキストを生のバイトとして表すことができます (例: ... )。utf-8
latin-1
unicode
エンコードされていないことに注意してください。Python で使用される内部表現は実装の詳細であり、必要なコード ポイントを表現できる限り気にする必要はありません。
逆str
に Python 2 では、単純なバイト列です。テキストを表すものではありません。
unicode
を介して表現されるバイナリ データのシーケンスにさまざまな方法でエンコードできるテキストの一般的な表現と考えることができますstr
。
注: Python 3 では、unicode
は に名前が変更され、単純なバイト シーケンス用のstr
新しい型があります。bytes
あなたが見ることができるいくつかの違い:
>>> len(u'à') # a single code point
1
>>> len('à') # by default utf-8 -> takes two bytes
2
>>> len(u'à'.encode('utf-8'))
2
>>> len(u'à'.encode('latin1')) # in latin1 it takes one byte
1
>>> print u'à'.encode('utf-8') # terminal encoding is utf-8
à
>>> print u'à'.encode('latin1') # it cannot understand the latin1 byte
�
str
を使用すると、特定のエンコーディング表現の単一バイトを低レベルで制御unicode
できますが、使用するとコードポイントレベルでしか制御できないことに注意してください。たとえば、次のことができます。
>>> 'àèìòù'
'\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9'
>>> print 'àèìòù'.replace('\xa8', '')
à�ìòù
以前は有効な UTF-8 でしたが、現在は有効ではありません。Unicode 文字列を使用すると、結果の文字列が有効な Unicode テキストではないような方法で操作することはできません。コードポイントを削除したり、コードポイントを別のコードポイントに置き換えたりすることはできますが、内部表現をいじることはできません。