java.io.InputStreamReader的read()函数定义:
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/InputStreamReader.html#read()
这个返回的值其实就是解码后的字符对应的Unicode码点(Unicode code point)。
举例
例如,经过查询可以得到,“中”这个字对应的Unicode码点是4E2D:
https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=4E2D
用代码验证下:
package com.thb;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class Test1 {
public static void main(String[] args) {
InputStreamReader is = new InputStreamReader(System.in, Charset.forName("GBK"));
try {
System.out.println("解码后的值(十六进制):" + Integer.toHexString(is.read()));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果(其中下面图中绿色的“中”是输入):