コーディング履歴


  • 8ビットバイトbyte
  • 開始コンピュータはアメリカでのみ使用され、2^8=256個でいくつかの記号と英語の文字を含むのに十分です
  • 1968年にASCIIコードを提出し、三つの部分
  • に分けた.
  • 第1部は、ASCII制御文字;範囲0-31端末、プリンタ等の制御記号
  • 第2部は、ASCII印刷文字;範囲32-127スペース、英字など(キーボードで見つけられる)
  • 第3部は、拡張ASCII印刷文字である.範囲128-255拡張文字セット、新しい字幕、記号、そして表を描くときの横線、縦線、交差など
  • 中国でコンピューターを使う時、もう利用できるバイトの状態で漢字を表すことができなくて、しかも6000余りの常用漢字が保存する必要があります.しかし、これは知恵の中国人民を倒すことができなくて、私达は远虑なくあれらの127号の后の奇異な記号达を直接取り消して、规定:1つの127より小さい文字の意味はもとと同じで、しかし2つの127より大きい文字がつながっている时、1つの漢字を表して、前の1バイト(彼は高いバイトと言います)は0 xA 1から0 xF 7まで使って、后の1バイト(低いバイト)は0 xA 1から0 xFEまで、これで約7000以上の簡体字を組み合わせることができます.これらのコードには、数学の記号、ローマ・ギリシャの文字、日本語の仮名も入っています.ASCIIにもともとある数字、句読点、アルファベットまで2バイト分のコードを再編成しました.これはよく言われる「全角」文字ですが、127番以下のものは「半角」文字と呼ばれています.
  • 1980年中国人民はこれがとても良いことを見て、そこでこのような漢字の方案を“GB 2312”と言います.GB 2312は、ASCIIへの中国語拡張です.
  • 後でまた足りないことを発見して、そこで引き続きGB 2312->GBK->GB 18030
  • を拡張します
  • GB 2312は6763漢字、GBKは21003漢字、GB 1800-2000は27533漢字、GB 1800-2005は70244漢字
  • そして、それぞれの国に独自のコード基準があり、互いに互換性がありません.どうすればいいですか
  • 1990年にISO(国際標誰化組織)という国際組織がこの問題の解決に着手することを決定した.彼らが採用した方法は簡単だ.すべての地域的な符号化案を廃棄し、地球上のすべての文化、すべてのアルファベット、記号を含む符号化を再構築した.彼らはそれを「Universal Multiple-Octet Coded Character Set」と呼び、UCSと略称し、通称「ユニコード」と呼ぶつもりだ.1994年に正式に発表された.
  • Unicode 1.0:1991年10月
  • Unicode 2.0:1997年7月
  • Unicode 3.x:1999年9月;統合ISO 10646
  • Unicode 4.x:2003年4月
  • Unicode 5.0:2006年7月
  • Unicode 5.1:2008年4月
  • Unicode 5.2:2009年10月
  • Unicode 6.0:2010年10月
  • Unicode 6.1:2012年1月
  • Unicode 6.2:2012年9月
  • Unicode 6.3:2013年11月
  • UNICodeでは、1文字が2バイトです.2^16=65536文字を組み合わせることができ、世界のすべての文化の記号をカバーすることができます.まだ足りなくても大丈夫、ISOはすでにUCS-4案を用意しています.簡単に言えば4バイトで1文字を表すことができます.そうすれば、2^31=21億個の異なる文字を組み合わせることができます(最高位には他の用途があります).銀河連邦が設立された日に使えるでしょう.(現在unicodeの指定範囲はU+0000 to U+10 FFFFとなっているが、後のように多くはまだ使用されていない)、Unicodeはシンボルのバイナリコードのみを規定しているが、このバイナリコードをどのように記憶すべきかは規定されていない.以下のUTF-8はUnicodeの実現方式の一つ
  • UTF-8はUnicodeに対する可変長文字符号化であり、8 bit符号化を採用し、バイト数範囲は1-6バイト(中国語では一般的に3バイト)である.つまり、最大2^48文字(ニマ、これはどれほど大きいか)を表現できる.それでも2003年11月にUTF-8はRFC 3629によって再規範化され、元のUnicode定義の領域、すなわちU+0000 to U+10 FFFFFFFFしか使用できなかった.つまり最大4バイト(実際には長く表示されていますが、ここでは規定が死にました)ということで、UTF-8が人気になったのは長くなるという特性のため、スペースを節約できるからだと思います
  • UTF-8解析の場合、UTF-8符号化における任意バイトB
  • Bの1番目のビットが0の場合、BはASCIIコードであり、Bは独立して1文字を表す.
  • Bの1番目が1、2番目が0の場合、Bは複数のバイトで表される非ASCII文字の1バイトであり、文字の1番目のバイト符号化ではなく、前または後に最初のバイトを見つける必要がある.
  • Bの最初の2ビットが1で、3番目のビットが0である場合、Bは非ASCII文字(複数のバイトで表される)の最初のバイトであり、2つのバイトで表される.
  • Bの3番目のビットが1、4番目のビットが0の場合、Bは非ASCII文字(複数のバイトで表される)の1番目のバイトであり、3つのバイトで表される.
  • Bの4番目のビットが1で、5番目のビットが0である場合、Bは非ASCII文字(複数のバイトで表される)の1番目のバイトであり、4つのバイトで表される.
  • unicodeとutf-8の変換を添付:(4バイトより大きいものは切り捨てられた)
  • UnicodeとUTF-8間の変換関係テーブル:
  • UCS-4 	          UTF-8 
    U+00000000 – U+0000007F	  0xxxxxxx
    U+00000080 – U+000007FF	  110xxxxx 10xxxxxx
    U+00000800 – U+0000FFFF	  1110xxxx 10xxxxxx 10xxxxxx
    U+00010000 – U+001FFFFF	  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    U+00200000 – U+03FFFFFF	  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
    U+04000000 – U+7FFFFFFF	  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  • 例えば「漢」字のUnicode符号化は6 C 49である.6 C 49は0800-FFFの間にあるので、3バイトテンプレート:1110 xxxxx 10 xxxxx 10 xxxxxxxを使います.6 C 49をバイナリとして書く:0110 1100,0100,1001,このビットストリームを3バイトテンプレートのセグメント化方法で0110,110001,001に分け、テンプレート内のxの順に置き換えて、1110-0110 10-10001 10-0010001、すなわちE 6 B 189を得る.これがUTF 8の符号化である.
  • 1