文字セットのエンコーディングと文字化けし

3155 ワード

文字:記号、アルファベット文字セットなど、さまざまな文字と記号の総称:すべての文字の集合を表す2次元テーブルに相当し、表示できるすべての文字を収録します.一般的な文字セットには、ASCII、GB 2312、GBK、GB 18030、BIG 5、Unicode符号化があります.文字をコンピュータシステムで認識できる数に変換するルールです.復号化:コンピュータが認識できる数字を、ルールで文字に表示します.
ASCII文字セットとASCII符号化(シングルバイト)ASCII(American Standard Code for Information Interchange)アメリカ情報交換標準コード.ラテン文字に基づくコンピュータ符号化システムで、主に現在英語とよく使われている西洋記号を表示しています.7ビットのバイナリコードで1文字、合計127文字を表します.一部の西欧諸国の需要のため、ASCIIコードに対して拡張ビットEASCIIを行い、8ビットで1文字を表し、合計256文字を表すことができる.
GBXXXX文字セットとBIG 5(ダブルバイト)コンピュータが東アジア諸国に伝わると、国際的な標準が秒殺された.そのため、異なる国ではASCIIを拡大し続けるこの2次元テーブルに沿って、1バイトの8ビットが明らかに足りないため、2バイト符号化が現れた.異なる国ではまた異なる符号化基準が現れた.GB 2312中国国家標準簡体字中国語文字セット漢字の符号化は、2バイトで表され、常用の6763字と非漢字682符号化のみを表す.繁体字なのに支持されていないので、香港・台湾のBIG 5や日本のShift_が登場しました.JIS. もちろん、6763文字の漢字は要求を満たすことができないので、マイクロソフトはGBKを発明し、GB 2312の未使用の符号化空間を利用して符号化を行った.全部で883個の記号、27533個の漢字、1894個の造字コードビットを提供した.しかし、国家コード基準が採用されていないわけではないが、マイクロソフトの影響が大きい.その後のGB 18130-2000はGBKと互換性があり、GB 18130-2005はわが国の少数民族文字の超大型中国語符号化文字セットを増加させた.GB 1800-2000に加えて42711の漢字と多種の我が国の少数民族文字の符号化を加えて合計70244の漢字を収録した.GB 1800-2005規格に収録されている文字は、それぞれ1バイト、2バイトまたは4バイトで符号化されている.GB 1800-2005は主に以下の特徴がある:
 UTF-8 , , 1 、2 4 。
 , 161 。
 , 。
 

このとき、問題は解決したようで、中国語を表示したい、GBシリーズがある、英語を表示したいのはASCIIかEASCIIです.それぞれローカルアクセスは問題ありませんが、ネットワークに現れると、異なる符号化方式を使用して相互アクセスが文字化けしてしまいます.各文字セットは異なる表を用いる、各文字の各表における並び順が異なるため、1文字につきGBXXXX符号化を用いる、UTF-8復号を用いると文字が見つからない、あるいは変な文字を表示すると文字化けしてしまう.Unicodeはそのため強大なUnicodeが現れ、漢字など各国でよく使われる文字を含め、大量の文字をここに収録した.この文字セットでは、すべての文字コードが一意です.UTF-8,UTF-16およびUTF-32はいずれもUnicodeの1つの実装形態に属する.uTF-8は可変長の符号化方式であり、範囲が1~4バイトであることを示す.UTF-16およびUTF-32は、それぞれ2または4バイトおよび4バイトで表される.その符号化方式も比較的簡単です.例えば漢字「厳」は、unicodeの16進数が4 E 25で、2進数に変換すると15ビット(100111000100101)で、少なくとも2バイト必要です.3つの4バイトが必要なものもありますが、どのバイトが表す文字なのかをどのように区別しますか?従って、UTF-8が採用する可変長符号化のルールは、
Unicode符号範囲|UTF-8符号化方式(16進)|(バイナリ)————————-+—————————————————————————0000 000-0000 007 F|0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(1)Unicodeでの16進数は,1バイトの符号であれば1ビット目が0に設定され,残りの7ビットがASCIIテーブルでの位置を表す.(2)nバイトの文字は、nバイトで表され、上位バイトの上位nビットは1で表され、n+1ビット目は0であり、残りのn−1バイトの上位2ビットはいずれも10で表される.残りの部分はこの文字のUnicode 16進数をバイナリに変換し、対応する低位から高位まで順次充填し、0を補う.例えば、厳字のUnicodeは4 E 25で、0000 0800-0000 FFFFの間で、対応するバイナリ数は100111000100101なので、符号化結果
 11100100 10111000 10100101

16進数に変換するとE 4 B 8 A 5になります.
UnicodeとUCSの歴史上、2つの独立した、単一文字セットを創立する試みがある.一つは国際標準化機構(ISO)のISO 10646プロジェクトである、この標準で定義された文字セットは、ユニバーサル文字セット(Universal Character Set,UCS)と呼ばれるもう一つは(最初はアメリカのものが多い)多言語ソフトウェアメーカーからなる協会組織のUnicodeプロジェクトである.幸いなことに、1991年前後、2つのプロジェクトの参加者は、世界が2つの異なる単一文字セットを必要としないことを認識した.それらは双方の仕事の成果を合併し、単一の符号化テーブルを創立するために協同して仕事をする.2つのプロジェクトは依然として存在し、独立してそれぞれの基準を公表しているが、Unicode協会とISO/IEC JTC 1/SC 2はUnicodeとISO 10646規格のコードテーブルの互換性を維持し、将来の拡張を緊密に調整することに同意している.UCS-2,UCS-4は,対応するISO 10646規格で定義されており,対応するものは2バイトまたは4バイトで同じ文字を表す.
一般的な文字化けしの問題と解決方法1ローカルで開いているファイルの文字化けしの問題の説明:あるエディタのファイル、別のエディタで開いて、漢字の文字化けしの2ブラウザの文字化けしの1ブラウザの復号方式とドキュメントの符号化方式が異なる2ブラウザとサーバーの符号化方式が異なる
以上の問題の解決策はすべて統一符号化であるが、GB 18030はGBKとGB 2312に対して下向き互換である.