python 3-文字列符号化関連


符号化の種類はとても多くて、よくある例えば:ASCIIコード:最も早くコンピュータの中に編入されて、長さは128で、主に英語の文字GB 2312を解決するためです:中国人の符号化の、中国語のUnicodeを解決するためです:多種の符号化の方式を統一して、文字のUTF-8:Unicodeの改善版を下げて、符号化の長さを節約します
python 3デフォルト符号化方式は、UTF-8符号化方式相互変換decode:既知の他の符号化形式のバイトをUnicode形式の文字列にコンパイルし、strタイプを返すとbytesオブジェクトのみがdecodeを呼び出すことができる
>>>x = b'1he\xd0\xa1\xb0\xd7'
>>>x1 = x.decode('gbk')
>>>print(type(x1))
>>>print(x1)
'str'>
1he 

Encode:Unicodeの符号化文字列でこの方法を呼び出すことができ、b’で始まるbytesタイプの役割はUnicodeの符号化文字列を必要な符号化形式バイトにコンパイルすることである.
>>>print('1he '.encode('gbk'))
>>>print(type('1he '.encode('gbk')))
b'1he\xd0\xa1\xb0\xd7'
'bytes'>

なお、bytesタイプは、ASCIIの範囲内の文字や他の16進数の文字データからなるが、中国語などの非ASCII文字では文字列とバイトの変換方法を表すことはできない:文字列—>バイトstr.encode(‘xx’)またはbytes(str,’xx’)、xxはstrが変換したい符号化タイプバイト—>文字列b’hexiaobai’を記入する.decode(‘xx’)またはstr(b’hexiaobai’,‘xx’)部分でエスケープできないバイトはどのように処理しますか?b’…’.decode(‘xx’,errors=‘ignore’)は、len():文字列呼び出し時に返される文字数バイト呼び出し時に返されるバイト数ord():単一文字の整数符号化を取得し、chr():符号化を対応する文字に変換して符号化タイプを表示する
from chardet import detect
a = b'dsad'
print(detect(a))