統一的に1種の符号化形式を採用する

4118 ワード

統一的に1種の符号化形式を採用する
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

 
まとめ:入力したデータを操作する前に,外部の補助関数を用いて文字シーケンスのタイプが開発者の期待に合致することを保証する.