java 如何读取汉字
读取汉字的方法
在Java中读取汉字需要注意字符编码问题,确保使用正确的编码方式(如UTF-8)以避免乱码。以下是几种常见场景的解决方案:
从文件读取汉字
使用InputStreamReader指定UTF-8编码读取文本文件:

try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("文件路径"), StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line); // 处理包含汉字的行
}
} catch (IOException e) {
e.printStackTrace();
}
从控制台读取汉字
确保IDE或终端环境支持UTF-8输出,使用Scanner类读取:

Scanner scanner = new Scanner(System.in, "UTF-8");
System.out.print("输入汉字: ");
String input = scanner.nextLine();
System.out.println("输入内容: " + input);
处理网络请求中的汉字
使用URLConnection时显式设置编码:
URL url = new URL("http://example.com");
URLConnection connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
// 处理响应数据
}
注意事项
- 所有涉及IO操作的类(如FileReader、FileWriter)默认使用系统编码,建议改用
InputStreamReader/OutputStreamWriter并明确指定UTF-8 - 编译时需添加编码参数:
javac -encoding UTF-8 Main.java - 文本文件保存时需选择UTF-8编码格式(无BOM)
验证编码是否正确
可通过打印字符的Unicode值验证:
String text = "汉字";
for (char c : text.toCharArray()) {
System.out.printf("U+%04x ", (int) c); // 输出类似 U+6c49 U+5b57
}
常见问题解决
- 出现乱码时检查:文件实际编码、IO流编码设置、环境编码是否一致
- 数据库连接需在URL中添加参数:
?useUnicode=true&characterEncoding=UTF-8 - 网页输出需设置响应头:
response.setContentType("text/html;charset=UTF-8")






