Pythonコーデック【初探】

1330 ワード

符号化は文字セット間の汎用性を両立させるためであり、通常符号化できる点は以下の通りである.
1、システムのデフォルトコード
2、プログラム実行環境の符号化
3、ソースファイル自身のコード
4、プログラム中の文字列符号化
pythonの場合も同じです.
通常、中国語オペレーティングシステムの符号化はgbkです.
python実行環境のデフォルトの符号化はascIIです
ソースファイルの符号化は自分で判断できる[#-*-coding:gbk-*-],設定しないのがデフォルトのpython符号化
プログラムコンテンツの符号化はpythonが提供するいくつかの関数によって変換することができる.【unicodeのように】
通常python符号化のプロセスは、次のとおりです.
文字を受け入れる--事前に符号化されていない場合はunicode符号化--システムの文字セットと一致しない場合は-->システムのデフォルトの文字セットに暗黙的に変換--システムの符号化方式を使用して文字列を復号する
pythonでのプログラム内部のコーディング方法:
>>s='  '
>>type(s) #  s     
>>s #      
>>print s  #         

>>unicode(s,'gbk')  #   unicode
>>type(s)
>>s
>>print s

>>s.encode('utf-8') ##   utf8
>>type(s)
>>s
>>print s

>>s.decode('utf-8') ##  utf8,        unicode
>>type(s)
>>s
>>print s


指定した符号化文字は、指定した符号化方式でしか復号できません.そうしないと、エラーが発生します.すべての文字セットpythonの中間文字セットはunicodeです.すなわち、gbkがutf-8に変換する経路が直接変換ではなく、gbk->unicode->utf-8である.直接gbk->utf-8はできません
また、特殊な文字を含む符号化の場合、直接復号化はエラーを報告する可能性があり、パラメータを使用して設定することができます.のように
s.decode('utf-8',ignore)異常のある符号化を無視し、有効な符号化のみを表示
s.decode('utf-8',replace)置換異常の符号化は?これに対して、それらの文字の符号化に問題があることは一目でわかるかもしれません.