常见的有两种字符集:
1. Unicode标准的字符集,范围是0~2^16,又分为:
a. UTF-16字符集,一个汉字字符用2个或4个字节表示。
b. UTF-8变长字符集,所有字符用1~4个字节表示,一个汉字字符用3~4个字节表示。
2. GBK字符集:汉字用2个字符表示。
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
public class ReaderTest {
public static void main(String[] args) {
Reader reader = null;
try {
reader = new FileReader("a.txt"); //获取一个读取a.txt文件的字符流
char a = (char)reader.read(); // 读一个中文字符
String b = String.valueOf(a); // 字符出转换成字符串,方便获取字符的字节长度
int le = b.getBytes().length; // 默认字符集为UTF-8时,长度为3
int le2 = b.getBytes(StandardCharsets.UTF_16).length; // 默认字符集为UTF-16时,长度为4
int le3 = b.getBytes("GBK").length; // 默认字符集为GBK时,长度为2
System.out.println(le);
System.out.println(le2);
System.out.println(le3);
// 两种获取字符集的方式
System.out.println(Charset.defaultCharset().name());
System.out.println(System.getProperties().get("file.encoding"));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}