pythonはencodeとdecodeをどのように区別しますか

5422 ワード

一.簡単に述べる
Encode()は符号化decode()であり、2つの関数パラメータが同じであることを復号する2つの構文です.
str.encode(encoding=‘UTF-8’,errors=‘strict’) str.decode(encoding=‘UTF-8’,errors=‘strict’)
1番目のパラメータは必要な符号化または復号化のフォーマットであり、2番目のパラメータはエラー処理スキームであり、デフォルトはstrictであり、現在の関数が間違っている場合、UnicodeErrorを投げ出す方法で処理することを意味する.
新しいケース:
>a = '  '
>a.decode('gb2312')
Traceback (most recent call last):
  File "", line 1, in <module>
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence

もちろんerrorsにも他のパラメータがありますが、よく使われる例ignoreを比較して、エラーを無視して、編集/解けるだけ残します.
> a.decode('gb2312','ignore')
u'\u6d93'
> print a.decode('gb2312','ignore')
 

以上はこの2つの関数に関する基本的な使い方ですが、もちろん上記の2つのものに頼ってこの2つのものをはっきり分けることができれば、あなたは私のこの文章を探すことはできません.では、どのように区別しますか?
やはりなぜpythonがこんなに煩わしい符号化の問題があるのかから言えば--pythonの内蔵方法は文字列をunicode符号化に変えることがよくありますが、私たちは他のものがほしいので、他の現在の方法に変えます.
二.記憶方法
1.感知法:過去に書いた数千万行のコードの中でpythonにencodeが現れる頻度がdecodeより高いと思いますか?なぜなら、encodeはunicode符号化にサービスしていると考えられるからです.
unicode符号化Encode(‘その他符号化1’)=その他符号化1
その他の書式コード1.decode('その他のフォーマット符号化1’)=unicode符号化
その他の書式コード1.decode(‘その他のフォーマット符号化1’).Encode(‘その他のフォーマット符号化2’)符号化1をunicodeに復号して符号化2に符号化することを示す一般的な構造でもある
一節の例を生々しく示す
>import chardet    #(python    ,            )
>a = u'  '
>b = a.encode('utf8')
>b
'\xe4\xb8\xad\xe6\x96\x87'  #   
>chardet.detect(b)
{'confidence': 0.7525, 'encoding': 'utf-8'}  #   
#   b utf-8,       b decode
>b.decode('utf8')
u'\u4e2d\u6587'  #   
>b.decode('utf8').encode('gbk')  #  utf-8   unicode      gbk
'\xd6\xd0\xce\xc4'   #  

それぞれの符号化タイプの違いとコンパイルの仕方については大きな話題であり,道友たちが別の場所に問い合わせなければならない.
2.共通記憶既知の英語の母音アルファベット[a e i o u]簡単な記憶eとuを縛って、encodeを取ってunicodeにサービスすることができます(encodeはunicodeです.出てくる方法/関数)は,両方の頭文字eとuが母音文字であり,記憶を補助する.
もちろん最善の方法はやはり多用したり、自分にブログを書かせたりして、思わず覚えてしまいます(smile~)