ホームページ  >  記事  >  Java  >  Java の基本入門のための文字エンコーディング

Java の基本入門のための文字エンコーディング

巴扎黑
巴扎黑オリジナル
2017-07-21 14:40:031578ブラウズ

1. ASII

アメリカ (国家) 情報交換標準 (コード) コード。

コンピュータには数字しかなく、すべてが数字で表され、画面に表示される文字も例外ではありません。

1バイトで表現できる数値は0~255で、例えばaは97、bは98とキーボード上のすべての文字を表示するのに十分です。この数字と文字に対応するエンコード規則は Asc11 コードと呼ばれ、ASC11 コードの最上位ビットはすべて 0、つまり ASC11 コードの値は 0 ~ 127 になります。

2. GB2312 および GBK (中国のローカル文字セット)

中国本土では各漢字を表すのに 2 バイトを使用し、漢字のバイトの最上位ビットは 1 です。この符号化形式は (gb2312) 国家標準コードと呼ばれ、gb2312 コードに対応する数値は負の数になります。

gb2312 に基づいて、GBK と呼ばれる繁体字中国語文字など、さらにいくつかの文字が追加されています

添付ファイル:

GB18030 エンコードは、より多くの中国語文字があり、2 桁のみを使用しているため、GBK エンコードに基づく拡張です。エンコーディングでは必要な中国語の文字に対応できなくなったため、より多くの中国語の文字エンコーディングをサポートするために 24 ビット混合方式が採用されています。

3. ANSI

各国語を表示するための ASCII エンコードを拡張するために、さまざまな国や地域で異なる標準が策定され、その結果、GB2312、BIG5、JIS などのそれぞれのエンコード標準が作成されました。文字を表すために 2 バイトを使用するこれらのさまざまな中国語の拡張エンコード方式は、ANSI エンコードと呼ばれ、「MBCS (Multi-Bytes Charecter Set、マルチバイト文字セット)」とも呼ばれます。簡体字中国語システムでは、ANSI エンコードは GB2312 エンコードを表します。日本語オペレーティング システムでは、ANSI エンコードは JIS エンコードを表します。したがって、中国語 Windows で gb2312 にトランスコードするには、gbk はテキストを ANSI エンコードとして保存するだけで済みます。 異なる ANSI エンコーディングは相互に互換性がありません。

4. ローカル文字セット

中国本土で使用されるコンピュータ システムでは、GBK および GB2312 がシステムのローカル文字セットと呼ばれます。

中国語の「中国」の文字は、中国本土のエンコードは16進数のD6D0、台湾ではA4A4です。台湾のエンコードはBIG5ビッグファイブコードと呼ばれます。ある国のローカリゼーション システムに表示されている文字が電子メールを介して別の国のローカリゼーション システムに送信されると、表示されるのは元の文字ではなく、別の国の文字または文字化けです。

5. Unicode エンコーディング

ISO 組織は世界中でシンボルを統一しており、それを Unicode エンコーディングと呼んでいます。

記号「中」は世界中で16進数の4e2dです。 すべてのコンピューターが Unicode エンコードを使用している場合、「中」という単語は世界中のコンピューターで「中」として表示されます。Unicode でエンコードされた文字は 2 バイトを占め、AC11 コードで表される文字の場合は、すべてのビットのバイトが追加されるだけです。 AS11 コードによって元々占有されていたバイトの前の 0 に等しい。表現される文字数は 65535 を超えない。実際には、エンコードには使用されない。

Unicode はまだ統一された世界を形成していません。長い間、ローカライズされた文字エンコーディングは Unicode エンコーディングと共存します。

Java の文字はすべて Unicode エンコーディングを使用します。

Java は、Unicode を通じてクロスプラットフォーム機能を保証することを前提として、ローカル プラットフォームの文字セットもサポートします。

6. UTF-8

Java言語やその他のプログラムの開発プロセスでは、特にXMLにはUTF-8 UTF-16も含まれます。広い意味の Unicode には、UTF8 と utf-16 も含まれます

UTF-8

-- ASC11 コード文字はそのまま残り、1 バイトのみを占めます。

--他の国の文字の場合、UTF-8 は 2 バイトまたは 3 バイトを使用してそれらを表します。

-- UTF-8 でエンコードされたファイルを使用する場合は、通常、ファイルの先頭の 3 バイトのデータとして EF BB BF を使用します。

7. UTF-8 と Unicode エンコード間の変換規則

-- 0001-007f (1 バイト)

0xxxxxx

-- 0000 または 0080 から 07ff までの文字、

110xxxxx 10xxxxxx (11 有効ビット) s ) (0080-07ff の間) Unicode は 16 ビットですが、実際には有効なビットは 11 ビットのみで、残りはフラグです。

-- 0800 から ffff、1110xxxx 10xxxxxx 10xxxxxx (16 有効ビット) までの文字。ソフトウェアは、UTF-8 エンコードの固定ビット値に基づいて、文字が 1 バイトを占めるか、それとも 3 バイトを占めるかを簡単に判断できます。バイト。

8. UTF-8の利点

-- ox00は表示されません(C言語では、



ue で開き、16 進数を確認してください。C1AA CDA8 C1AA CFE8 //これらはすべて GB2312 エンコーディングです。中程度の場合は D6D0、つまり C1AA が接続され、CDA8 が CFE8 に接続されます。バイナリ表現は次の方法で取得できます:

int x=0xCDA8;
System.out.println(Integer.toBinaryString(x)  );

//11000001 10101010 Lian 11001101 10101000 メモ帳のファイルはデフォルトで中国語の文字セット GB2312 に従って保存されるため、単語「Lian」は1100 0001 1010 1010 に解析され、文字は 1100 1101 1010 1000 として保存されました。メモ帳ドキュメントを開いたとき、これらのバイナリ形式はたまたま UTF-8 のルールに対応していたので、システムはこれを UTF-8 でエンコードされたファイルと見なしました。が UTF-8 として解釈されて文字化けが表示される 解決策は、保存時に UTF-8 を直接押して保存すると文字化けが表示されなくなります。

10. プログラムを使用して文字のエンコードを確認します

中国語の文字の GB2312 コードを確認します

漢字の UTF-8 コードを確認します

漢字の Unicode コードを確認します

public static void main(String[] args) throws UnsupportedEncodingException {
          String str="中国";        //查看字符的unicode码,将一个字符转成整数,得到的就是unicode值/*    for(int i=0;i<str.length();i++){
            int unicodeCode=str.charAt(i);
            System.out.println(unicodeCode); // 20013,22269
            
            System.out.println(Integer.toHexString(unicodeCode)); //对应的16进制 4e2d,56fd
        }*///查看字符的gb2312码byte [] buff =str.getBytes("gb2312");        for(int i=0;i<buff.length;i++){
            System.out.println(buff[i]); // -42,-48,   -71,-6System.out.println(Integer.toHexString(buff[i]));  //ffffffd6 ,ffffffd0    ffffffb9,fffffffa        }
    }

以上がJava の基本入門のための文字エンコーディングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。