Javaの基礎 - IOストリームの文字セット

(1) IOフロント内容:文字セット

1. 文字セットの基本知識:

  • コンピュータの最下層には文字を直接保存できず、バイナリ (0, 1) のみが保存されます。
  • 2進数を10進数に変換できます。
  • 基盤となるコンピューターは 10 進数を表現できます。コンピュータは人間の文字に番号を付けて保存することができ、この番号付け規則のセットが文字セットです。

2. ASCII 文字セット:(1 バイト)

  • ASCII (American Standard Code for Information Interchange、American Standard Code for Information Interchange): 数字、英語、記号が含まれます。
  • ASCII は 1 バイトを使用して文字を格納します。1 バイトは 8 ビットで、合計 128 個の文字情報を表すことができ、英語と数字には十分です。

3.GBK:(2バイト)

  • ウィンドウ システムのデフォルトのコード テーブルは ASCII コード テーブルと互換性があり、数万の中国語の文字も含まれており、繁体字中国語の文字と一部の日本語および韓国語の文字もサポートされています。
  • 注: GBK は中国語のコード テーブルであり、1 つの中国語と 2 バイトの形式で保存されます。しかし、世界中のすべての国語が含まれているわけではありません。

4. Unicodeコード表:(UTF-8:3バイト)

  • Unicode (Unicode、Universal Code、Unicode とも呼ばれる) は、コンピューター サイエンスの分野における業界の文字エンコーディング標準です。
  • 世界のほとんどの国のすべての一般的な文字と文字に対応します。
  • Unicode は UTF-8、UTF-16、UTF-32 によってバイナリにエンコードされてからコンピューターに保存されるため、最も一般的なのは UTF-8 です。
  • 漢字の保存/表示の原則: 保存: まず、Unicode テーブルを通じて中国語の文字をクエリし、コード テーブルで対応する番号を見つけ、それをバイナリに変換し、UTF-8 エンコーディングを通じてコン​​ピュータに保存します。表示: バイナリを読み取り、UTF-8 デコードし、コード テーブル内の対応する番号を通じて Unicode コード テーブルをクエリし、表示します。
  • 知らせ:
    • Unicode はユニバーサル コードであり、UTF-8 でエンコードした後、中国語は通常 3 バイトの形式で保存されます。
    • UTF-8 は、ASCII エンコード テーブルとも互換性があります。
    • すべての技術者は、UTF-8 文字セット エンコーディングを使用する必要があります。
    • エンコード前とエンコード後の文字セットが一致していないと、中国語の文字化けが発生します。

5. 文字列エンコーディング

メソッド名 説明する
バイト[] getBytes() プラットフォームのデフォルトの文字セットを使用して、この文字列を一連のバイトとしてエンコードし、結果を新しいバイト配列に保存します。
byte[] getBytes(String charsetName) 指定された文字セットを使用してこの String を一連のバイトとしてエンコードし、結果を新しいバイト配列に格納します。

6.文字列のデコード

コンストラクタ 説明する
文字列(バイト[]バイト) プラットフォームのデフォルトの文字セットを使用して、指定されたバイト配列をデコードすることにより、新しい String を構築します。
String(byte[] バイト,String charsetName) 指定されたバイト配列を指定された文字セットでデコードすることにより、新しい文字列を構築します

7. 文字列のエンコードおよびデコードコードの実装:

import java.util.Arrays;
/**
 * 编码,解码
 */
public class Test01 {
    public static void main(String[] args) throws Exception {
        //1.编码:把文字转换成字节
        String name = "abc认真学习";
//        byte[] bytes = name.getBytes();//默认字符集编码 UTF-8
        byte[] bytes = name.getBytes("GBK");//指定字符集编码 GBK
        System.out.println(Arrays.toString(bytes));

        //2.解码:字节转换成对应中文(注意:编码前和编码后的字符集必须一致)
//        String rs = new String(bytes);//默认 UTF-8
        String rs = new String(bytes,"GBK");//指定 GBK
        System.out.println(rs);
    }
}

おすすめ

転載: blog.csdn.net/weixin_61275790/article/details/130189407