コーデック
- ASCII:1バイト、0-255
- GBK2313:一般20,000以上、漢字を使用
- GBK:2バイトの文字を表し、チベットを支援するためにGBK2313に補完
- BIG5:台湾、伝統
- Unicodeにコーディングするとき、2-4バイトは、メモリを除き、伝送または格納された:ユニコード
- UTF:ユニコード変換フォーマット
- UTF-8:可変長、1-4バイト、ASCII、2バイト文字に対応して、利点は、省スペースですが、時間の無駄
- UTF-16:2つのバイト
- UTF-32:4バイト
要するに:
- Unicodeは、世界の各文字のインデックス値を定義します。
- Unicodeエンコーディングは:世界中のすべての文字が含まれていますが、彼はただのメモリで使用するために使用します。ファイルやネットワーク伝送を格納するために必要ならば、デフォルトのコンピュータ・システムは、Unicodeをサポートしていません。
ファイルを保存したりする必要がある場合、ネットワーク伝送:我々しなければならないバイト型(GBKまたはバイトUTF-8でエンコードされた文字列型)。
私たちは、GBKまたはUTF-8を使うのか?
- UTF8 / UTF16 Unicode標準が実装され、文字が記憶媒体に格納されています。
- PY3デフォルトのエンコード形式は、典型的には、3バイト、2バイト一般GBK、UTF-8でエンコードされた中国語UTF-8であります
- PY3のデフォルトはファイルに保存されたstrの同様のタイプ(すなわちタイプユニコード)、あるタイプは、バイトのタイプです
- デフォルトのタイプは、タイプPY2のSTR(すなわちバイトタイプ)であります
Unicodeに変換し、デコード(復号化)---->タイプ(STR)によって---->入力バイト
ユニコードで---->エンコード(符号化)によって----->は、バイト型に変換され
#PY3列内部 >>> = S " A " >>>タイプ(S) #ユニコードSTR対応PY3タイプである < クラス ' STR ' >
>>> S1 = B'A「#1 PY3は、以前のバイトタイプBに添加します
>>>タイプ(S1)
<クラスが'バイト'>
S = >>> " 中国" >>> s.encode(" UTF-8 ") #は、バイト符号化タイプに符号化された後に B ' \ XE4 \ XB8 \ XAD \ xe5 \ X9b \ XBD ' #1 バイトタイプはフロントを有しますB開始 >>>タイプ(s.encode(" UTF-8 " )) < クラスは ' バイト' > >>> >>> s.encode(" GBK ") #1 バイトにSTR型は、符号化ビットのタイプ符号化するために必要 Bを' \ XD6 \ XD0 \ xb9 XFA \ ' >>> s.encode("GBK ").decode(" GBK") #STR型のデコードする必要のどのタイプにバイトを ' 中国' タイプの>>>(s.encode(" GBK ").decode(" GBK " )) < クラス ' STR ' > >>> 注:ファイルへの書き込みエンコード後に書かなければならないとき、
>>>( "GBK")GBKエンコーディングで#S = "開発グローリー・ロードテストトレーニング" .encode
>>> S
XE2 \ XB2 \ XB7 \ B「\ xb9 \ XE2 \ xc8 \ XD9 \ XD6 \ XAE XC2 \ \ XCA \ XD4 \ XBF \のXaa \ XB7 \ XA2 \ XC5 \ xe0 \ XD1 \ Xの
B5 "
>>> s.decodeデコードUTF-8で( "UTF-8")#
トレースバックを(最新のラストコール):
ファイル"<STDIN>"、1行目、<Module1を>インチ
UnicodeDecodeError 'UTF-8'コーデックが0xB9がデコードバイト位置0にすることはできません:無効なエラー# 'UTF-8'コーデックバイト位置0xB9をデコードすることはできません0:無効な
スタートバイト
>>>
>>> s.decode( "GBK")#GBKによって復号化
'グローリー・ロードテスト開発研修'
>>>
#の内部PY2列 >>> S = " ABC " >>>タイプ(S) #1 PY2のSTR、種別に対応するバイト <タイプ' STR ' > >>> >>> s.decode(" GBK ")#py2strタイプは、最初のデコードencdoeことができない、 U 「ABC 」 #は、ユニコードがデコードUの開始時に添加 >>>タイプ(s.decode(「GBK 」)) <タイプ「ユニコード」 > >>> 印刷 S.デコード(" GBK ") ABC >>> 印刷s.decode(「GBK 」).encode(「GBK 」) ABC >>>
注:PY2の状況を制御することはできません覚えていない場合のみPY3を覚えています