統一的に1種の符号化形式を採用する
4118 ワード
統一的に1種の符号化形式を採用する
Pythonプログラムを作成するときは、必ず符号化と復号化の操作を外部に置いてください.プログラムのコア部分はUnicode文字タイプを使用し、文字の符号化を設定しないでください.strタイプでもbytesタイプでも、統一された文字符号化形式を返すことを保証したいと考えています.
これにより、プログラムに複数のタイプのテキスト符号化を受信させるとともに、出力されたテキスト情報が1つの符号化形式のみを採用することを保証し、外部を通じて符号化の統一を保証することができる.
文字列の種類が異なるため、Pythonコードには2つの一般的な使用シーンがよくあります.
1.開発者は、UTF-8形式(または他の符号化形式)で符号化された文字を表す元の8ビットbit値を必要とする.
2.開発者は、特定の符号化形式を持たないUnicode文字を操作する必要がある.
Python 3では、strまたはbytesを受信し、strを常に返す方法を記述する必要があります.
bytesを合計する方法
二Python 2では、strまたはUnicodeを受信し、常にUnicodeを返す方法を記述する必要があります.
合計戻りstr
まとめ:入力したデータを操作する前に,外部の補助関数を用いて文字シーケンスのタイプが開発者の期待に合致することを保証する.
Pythonプログラムを作成するときは、必ず符号化と復号化の操作を外部に置いてください.プログラムのコア部分はUnicode文字タイプを使用し、文字の符号化を設定しないでください.strタイプでもbytesタイプでも、統一された文字符号化形式を返すことを保証したいと考えています.
これにより、プログラムに複数のタイプのテキスト符号化を受信させるとともに、出力されたテキスト情報が1つの符号化形式のみを採用することを保証し、外部を通じて符号化の統一を保証することができる.
文字列の種類が異なるため、Pythonコードには2つの一般的な使用シーンがよくあります.
1.開発者は、UTF-8形式(または他の符号化形式)で符号化された文字を表す元の8ビットbit値を必要とする.
2.開発者は、特定の符号化形式を持たないUnicode文字を操作する必要がある.
Python 3では、strまたはbytesを受信し、strを常に返す方法を記述する必要があります.
# str bytes str
def to_str(str_or_bytes):
if isinstance(str_or_bytes, bytes):
# bytes, str
value = str_or_bytes.decode('utf-8')
else:
value = str_or_bytes
return value
bytesを合計する方法
# str bytes bytes
def to_bytes(str_or_bytes):
if isinstance(str_or_bytes, str):
# bytes, str
value = str_or_bytes.encode('utf-8')
else:
value = str_or_bytes
return value
二Python 2では、strまたはUnicodeを受信し、常にUnicodeを返す方法を記述する必要があります.
'''
python2
'''
# str unicode str
def to_str(str_or_bytes):
if isinstance(str_or_bytes, unicode):
# bytes, str
value = str_or_bytes.encode('utf-8')
else:
value = str_or_bytes
return value
合計戻りstr
# str unicode unicode
def to_unicode(str_or_bytes):
if isinstance(str_or_bytes, str):
# bytes, str
value = str_or_bytes.decode('utf-8')
else:
value = str_or_bytes
return value
まとめ:入力したデータを操作する前に,外部の補助関数を用いて文字シーケンスのタイプが開発者の期待に合致することを保証する.