文字エンコーディングは、あなたのノートを整理します

文字エンコーディングの最初に、起源

  私たちは、内部のコンピュータが唯一のバイナリ符号化である0と1を、処理することができます知っています。私たちは、オペレーティングシステムのディスクファイルに精通している簡単なアプリケーションが読み取って、人々のコミュニケーションのために実際にコンピュータの内部メモリの抽象カプセル化したものです。ディスクファイルの内容は、コンピュータが処理するためには、2値的に保存されている、デジタルに変換する必要があります。
  バイトは10進整数最大255(1111 1111)を表すことができるように、それぞれが、2進数の0と1、バイト(バイト)として8ビット(ビット)を用いて設計された最初のコンピュータ、即ち8ビットのバイナリで表されるからです。
  全てのファイルはバイトの方法配列に格納され、ディスク・ファイル、データ・メモリと、データ伝送線を含むコンピュータ・システム内のすべての情報は、ビット列で表現されます。

  1.コンピュータのファイル

  バイナリファイルとテキストファイル:コンピュータファイルは基本的に2つの種類に分かれています。バイナリ - 彼らはハード・ディスク・ストレージ・メソッド上のようなものを持っているので、それらの間に本質的に違いはありません。
  テキストファイル:文字の多くの行からなるコンピュータファイルの一種、あなたは単純なテキストファイルを読むために任意のワードプロセッシングプログラムを使用することができます。
  バイナリファイル:コンピュータプログラムなどのワードプロセッサやグラフィックファイルは、バイナリファイルの一部です。
  

  2.文字エンコーディング

  ASCII文字セット

  米国は、文字エンコーディングのセットを開発し、ASCII文字セット(情報交換用米国標準コード、情報交換用米国標準コード)であるバイナリコーディング、英語文字対1のマッピング。ASCII文字セットのエンコーディングは、共通の英語の文字、数字及び32個の制御シンボルを含む128文字の合計を提供する、例えば、Aが65(バイナリ01000001)を意味します。これらのシンボルは、7の後にゼロに最初の統一セットをバイトになります。

  他の文字セット

  英語の文字は、128個のシンボルによってコーディング要件を満たすが、別の国が独自の文字セットを開発してきたように、漢字や日本語(漢字約100 000がある)が、十分ではありませんため。たとえば、簡体字中国語共通の符号化には、最大255x255 = 65536のGeを表す理論的に、文字の2つのバイトを使用し、GB2312です。日本はシフトJISエンコーディングを使用し、韓国はEUC-KRのエンコーディングを使用しています。いずれの場合においても、シンボルは、他のビットことを除いて、0〜127の結束を表します。

  Unicode文字セット

  あなたは、ファイルを開きたい場合は、上記によると、エンコーディングのさまざまな既存の、あなたはファイルのエンコーディングを知っている、または他の不便の表示文字エンコーディングを行っている、文字化けを起こす必要があります。
  ユニコード(ユニバーサルマルチオクテット符号化文字セット)は、複数の国をサポートするために百万人以上の記号、文字エンコーディングを収容することができる文字の集合であり、それは、それをコードする、16ビットに拡張ASCIIコードの文字の長さであろう。しかし、これは二つの問題につながります。
  まず、コンピュータは、不確実なバイト長のファイルを読み込みます。
  第二は、ASCII文字、収納スペースの大きな無駄です。

  UTF-8エンコーディング

  あなたができるように、UTF-8(UCS転送フォーマット-8)は、最も広くユニコードの方法として使用するために、インターネット上での符号化、符号化と国境なしの伝送のために設計された各8ビットの伝送を、使用されています世界上の文字。もちろん、UTF-16、UTF-32など  
  UTF-8の最大の特徴は、可変長符号化であるということです。文字は、ASCIIコードの範囲にある場合、それは一つのシンボルの1〜4バイトであることができる、バイト長に応じてシンボルの変更は、それは1バイトの予約バイトASCII文字コードとして表されますその一部は、中国の文字のUnicode 2バイト、UTF-8や漢字、3バイトことに留意されたいです。

  Unicode変換UTF-8

  次のようにUnicodeのUTF-8から変換するには、いくつかのルールが必要です。
  1.シングルバイト文字は、最初のバイトが0に設定され、英語のテキストに、UTF-8コードは1バイトを占有し、ASCIIコードは同じです。
  2. nバイト文字(N> 1)、最初のバイトの最初のnビットが1に設定され、N + 1ビットが0に設定され、最初の2つのバイトは、背面10に設定され、n個バイトのUnicode文字コード、ゼロで高の残りのスペースを埋めます。
 
  記号はUnicode UTF-8エンコーディングの範囲
  (16進数)(バイナリ)
  ----------------------
  0000 0000-0000 007F | 0xxxxxxx
  0000 0080-0000 07FF | 110xxxxx 10xxxxxxに
  0000 0800-0000 FFFF | 1110xxxx 10xxxxxxに10xxxxxxに
  0001 0000-0010 FFFF | 11110xxx 10xxxxxxに10xxxxxxに10xxxxxxに
 

第二に、一般的なコーディングの問題(python2.7)

  1.エンコード形式を指定します

  pythonファイルのデフォルトはASCIIコードであるので、中国がファイルを表示されたとき、あなたはエンコーディングを指定する必要があり、「UTF-8」、ファイルヘッダ内プラス「#coding:UTF-8」です。すべての文書が英語である場合は、英語での2つのエンコーディング間に違いはありませんので、それを指定する必要はありません。
  デフォルトのASCIIモードを復号するためのPythonのファイルは、あなたが復号化方法を指定する必要があります。
輸入SYSの
リロード(SYS)
sys.setdefaultencoding(" UTF-8 "

  2.一般的なトランスコーディング

  (1)STR2 = str1.decode( "自体はコード").encode( "目標符号化フォーマット")
 
     
 
  (2)一般的に用いられる方法
  16進表現に対応する対応文字、ヘックス()関数整数文字に10進数の整数を10進整数、CHR()関数の文字を取得するORD()関数
     
      

  3.大会

  コンピュータメモリに、時間を節約する必要性やハードディスクが送信される均一利用Unicodeエンコーディングは、UTF-8でエンコードされたに変換されます。ファイルから読み込むメモ帳、UTF-8文字をされている編集するときのUnicode文字は、時間を節約し、編集した後、メモリに変換された後、UTF-8のファイルに変換されます。ウェブを閲覧すると、サーバが動的にUnicodeのUTF-8にコンテンツを生成し、ブラウザに送信されます。

  4.中国の表示

  1)輸入uniout
コード:UTF-8 
インポートuniout 
S = { " こんにちは"" 你好" }
 プリント(S)
  出力{「こんにちは」:「こんにちは」}

  2)json.dumps(STR、ensure_ascii = false)を借りることができ

 

参考リンク:

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
https://www.zhihu.com/question/23374078 

おすすめ

転載: www.cnblogs.com/hithink/p/11203180.html