python3のunicod、UTF-8、GBKエンコーディングと中国の表示に関する問題をデコード

頭痛をコードのpython3文字。
これは入門GBK、UTF-8ではありません、Unicodeは英語のどの基本を表し、漢字の要約。
同様の多くのオンラインの記事がありますが、各ビットの意味が示しているかを理解することを学ぶために上昇する必要はありません。

目的:
文字が正しく表示されることができるかどうか、なぜ異なるのpython3のエンコード、デコード、WindowsやLinuxオペレーティングシステムの明確な理解、。

前提条件は:
異なる符号を2本の異なる長さを理解し、文字を表すためにコーディングシステム。
python3では、中間コードなどのさまざまなUnicode文字コードの相互変換は、変換を通過します。GBKは、UTF-8からUnicodeに変換次いで、ユニコードに変換されます。

分析:
符号化および復号化の概念の4種類を区別するために、

1.コードエンコードされたファイルへの書き込み。
選択的に「コーディング」メニューのNotepad ++は、ステータスバーにエンコードの種類を見ることができます。
メニュー「ファイル」でpycharm、「編集」、 「ファイルのエンコーディングは、」 デフォルトのエンコーディングを設定することができます。私たちは、ステータスバーにエンコードの種類を見ることができます。

2.python3記載符号復号フォーマット。
コード#コーディング= GBK。
Pythonのエンコード宣言は、それがシステムのデフォルトのエンコーディングとローカルのデフォルトのエンコーディングを変更しない、の.pyファイルを復号化するためにどのような形式のエンコードにコンパイラに指示します、
またそれは、フォーマットをコードする現在のコードファイルではなく、現在のコードファイルのステートメントを宣言するために使用されています復号化方法。言い換えれば、
エンコード形式コードファイルは、使用するエディタに依存し、どのようにファイルを復号化するためには、先頭に宣言をコードファイルに依存します。
一般的に、フォーマットは、フォーマットコードと、すなわちエディタは一貫しているべき宣言をコードし、符号化及び復号化フォーマットと一致しなければなりません。

注:述べた符号の復号の種類に応じて、pycharmは自動的にタイプ一貫したを符号化および復号化の符号化タイプ、メーカーや種類を変更します。これはpycharmの利点です。

デフォルトのエンコード形式3.pythonインタプリタ。
.py Pythonのコンパイラは宣言をコードせず、ファイルを読み取ると、復号するシステムのデフォルトは、ファイルの.pyをコードしていました。
sys.getdefaultencoding輸入SYSで()ビュー、

コード4.ローカルデフォルト
局所平均は、オペレーティング・システム、即ち、ローカル・オペレーティング・システムのデフォルトエンコーディングデフォルトエンコーディングです。
オペレーティングシステムが変更されたと明らかに、異なるオペレーティングシステム間で一貫性のpythonコンパイラのデフォルトのエンコーディングは、オペレーティングシステムのデフォルトのエンコードが異なります。
輸入ロケールで、Locale.getdefaultlocale()を表示。窓はGBKで、LinuxはUTF-8です。

実施例1:
UTF-8でエンコードされた(STR =「に」)中国語文字列のpython3するが、コード宣言GBKをデコードし、コードは、ファイルF2、Linuxで示す工程でGBK(ファイルシステムの書き込み方法)によって書き込まれます。
分析:

  1. '\ xe4 \ xb8 \ XAD B' のUTF-8でエンコードされた漢字 "中" とのpython3コードファイル
  2. 文字%と、(メモリ内にエンコードされたUnicodeのUnicode文字列の形で)列の歪みを与えるために、述べGBKのB「\ xe4 \ xb8 \ XAD」を読み取るコードを使用してインタプリタのpython3。
  3. GBKをb '\ xe4 \ xb8 \ XAD' 書き込みファイルF2をコードするのGBKの文字エンコーディング%とのpython3コード
  4. LinuxターミナルはUFT-8 B '\ xe4 \ xb8 \ XAD'、通常のディスプレイで開かれています

実施例2:
UTF-8でエンコードされた(STR =「に」)中国語文字列のpython3する、コード宣言GBKをデコードし、コードはLinuxで示すファイルF2にUFT-8(ファイルシステムの書き込み方法)、によって書かれていますプロセス。
分析:

  1. '\ xe4 \ xb8 \ XAD B' のUTF-8でエンコードされた漢字 "中" とのpython3コードファイル
  2. 文字%と、(メモリ内にエンコードされたUnicodeのUnicode文字列の形で)列の歪みを与えるために、述べGBKのB「\ xe4 \ xb8 \ XAD」を読み取るコードを使用してインタプリタのpython3。
  3. エンコーダ付きのpython3 UFT-8コード、対応%UTF-8文字コード(確かではないB '\ xe4 \ xb8 \ XAD' バイナリ値)、ファイルF2への書き込み
  4. 正しく表示することができませんコーディングないUFT-8 B '\ xe4 \ xb8 \ XAD' はLinuxのオープンエンド。

参考記事:

  1. https://www.cnblogs.com/yuanchenqi/articles/5956943.html

  2. https://mp.weixin.qq.com/s/JxD7LC33zbFD5QBxJ6jMWw

  3. https://blog.csdn.net/qq_33692803/article/details/81321340?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

おすすめ

転載: blog.51cto.com/jsahz/2480981