ホームページ  >  記事  >  バックエンド開発  >  Pythonの変換モジュールコーデックの解説(例付き)

Pythonの変換モジュールコーデックの解説(例付き)

不言
不言転載
2018-10-29 17:13:257403ブラウズ

この記事では、Python の変換モジュール コーデックについて説明します (例を示します)。一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。

0. エンコーディング

エンコーディングを変換するときは、通常、中間エンコーディングとして 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.エンコード方式を確認します

(1) よく使うメモ帳の場合「ファイル」→「名前を付けて保存」現在のエンコード方式を表示できます。
(2) メモ帳などで開き、「メニューバー」→「書式設定」をクリックして表示します。
(3) UltraEdit:
さまざまなエンコーディングを持つテキストのエンコーディング形式は、テキストの最初の 2 バイトに基づいて定義されます。定義は次のとおりです:

ANSI: 形式定義なし;
Unicode: 最初の 2 バイトは FFFE;
Unicode ビッグ エンディアン: 最初の 2 バイトは FEFF;
UTF-8: 最初の 2 バイトは EFBB;
この方法で最初の 2 バイトを渡すことができますbytes ファイルの特定の形式が決定されます。

2. Python エンコーディング

Python がエンコーディング変換を行う必要がある場合、内部エンコーディングを使用します。変換プロセスは次のとおりです。目的のエンコーディング

Python は内部的に Unicode を使用して処理されますが、Unicode を使用する際に考慮する必要があるのは、合計 65536 コード ポイントを持つ UCS-2 と、 UCS-4。コード ポイントは 2147483648g です。

インストールされた 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 &#39;str&#39;>
<class &#39;bytes&#39;>
b&#39;\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91&#39;
<class &#39;str&#39;>
风卷残云
风卷残云

3. codecs モジュール

codecs は、コーディング変換に特別に使用されます。そのインターフェイスを通じて、他のコード変換に拡張できます。

python3.x では、最初に手動で Unicode に変換しなくても、バイト型データを他のエンコード形式に直接変換できます。

import codecs
a = "我爱你"
 # 创建utf-8编码器
look = codecs.lookup(&#39;utf-8&#39;)
type(a)
a = bytes(a,encoding=&#39;utf-8&#39;)
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 サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。