(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);
}
}