この記事では、Python の変換モジュール コーデックについて説明します (例を示します)。一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。
エンコーディングを変換するときは、通常、中間エンコーディングとして Unicode を使用する必要があります。つまり、最初に他のエンコードされた文字列を Unicode にデコードします。 、次に Unicode から別のエンコーディングにエンコードします。
str1.decode('gb2312') #将gb2312编码的字符串转换成unicode编码 str2.encode('gb2312') #将unicode编码的字符串转换成gb2312编码
注:
s=‘中国語’ utf8 ファイルにある場合、文字列は utf8 でエンコードされ、gb2312 ファイルにある場合、そのエンコードは gb2312 です。この場合、エンコード変換を行うには、まず decode メソッドを使用して Unicode エンコードに変換し、次に encode メソッドを使用して他のエンコードに変換する必要があります。
特定のエンコード方法が指定されていない場合は、システムのデフォルトのエンコードを使用して作成されたコード ファイルが使用されます。
文字列が次のように定義されている場合: s=u'中国語'、コード ファイル自体のエンコーディングに関係なく、文字列のエンコーディングは Python の内部エンコーディングである unicode として指定されます。 encode メソッドを直接使用して、指定したエンコードに変換するだけで済みます。
文字列がすでに Unicode になっている場合、デコード時にエラーが発生するため、通常はエンコード方式が Unicode であるかどうかを判断する必要があります isinstance( s, unicode ) #unicodeかどうかを判断するために使用します
(1) よく使うメモ帳の場合「ファイル」→「名前を付けて保存」現在のエンコード方式を表示できます。
(2) メモ帳などで開き、「メニューバー」→「書式設定」をクリックして表示します。
(3) UltraEdit:
さまざまなエンコーディングを持つテキストのエンコーディング形式は、テキストの最初の 2 バイトに基づいて定義されます。定義は次のとおりです:
ANSI: 形式定義なし;
Unicode: 最初の 2 バイトは FFFE;
Unicode ビッグ エンディアン: 最初の 2 バイトは FEFF;
UTF-8: 最初の 2 バイトは EFBB;
この方法で最初の 2 バイトを渡すことができますbytes ファイルの特定の形式が決定されます。
Python がエンコーディング変換を行う必要がある場合、内部エンコーディングを使用します。変換プロセスは次のとおりです。目的のエンコーディング
import sys print(sys.maxunicode)出力値が 65535 の場合は UCS-2、出力値が 1114111 の場合は UCS-4 エンコードです。 内部コードへの変換:
c = "风卷残云" print(type(c)) c = bytes(c,encoding='utf-8') print(type(c)) print(c) b = codecs.decode(c, "utf-8") #与c.decode()等效 print(type(b)) print(b) print(c.decode())出力:
<class 'str'> <class 'bytes'> b'\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91' <class 'str'> 风卷残云 风卷残云3. codecs モジュール codecs は、コーディング変換に特別に使用されます。そのインターフェイスを通じて、他のコード変換に拡張できます。 python3.x では、最初に手動で Unicode に変換しなくても、バイト型データを他のエンコード形式に直接変換できます。
import codecs a = "我爱你" # 创建utf-8编码器 look = codecs.lookup('utf-8') type(a) a = bytes(a,encoding='utf-8') b = look.decode(a) print(b)出力:
('我爱你', 9)返されたタプルでは、b[0] がデータ、b[1] が長さです。
#** コーデックが提供する open メソッドを使用して、開いたファイルの言語エンコーディングを指定します。読み取り時に自動的に内部 Unicode に変換されます**
f = codecs.open(filepath, 'r', 'utf8')
を読み取る方法は多数あります。ここでは、for ループを使用して走査できます。もちろん、readline または readlines 関数メソッドを使用して直接読み取ることもできます。
rree以上がPythonの変換モジュールコーデックの解説(例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。