2

可能重复: 如何在 Java 中使用 Scanner 正确读取汉字?

我的输入文件名可能包含日文字符,我正在尝试使用扫描仪读取文件名。

Scanner sc = new Scanner(System.in,"utf-8");
System.out.println("Encoding is :" + Charset.defaultCharset());

System.out.println("Enter the path:");
inputFilePath = sc.nextLine();

如果我的输入是例如 - 汉字

当我打印文件名时,我的输出是

Encoding is :UTF-8
Input File Path:漢字

我也试过,

byte[] jis = sc.nextLine().getBytes("Shift_JIS");
System.out.println(new String(jis));

我的输出是

Input File Path:??��??�\

我该如何纠正这个问题?

4

3 回答 3

3

您的代码是正确的,唯一的问题是您正在阅读utf-8然后将其转换为Shift_JIS打印垃圾字符的代码。

你试过用这个。

Scanner sc = new Scanner(System.in,"utf-8");
System.out.println("Encoding is :" + Charset.defaultCharset());

System.out.println("Enter the path:");
String inputFilePath = sc.nextLine();
System.out.println("Input path:" + new String(inputFilePath.getBytes("utf-8")));

希望这可以帮助 !!

于 2013-02-20T07:33:19.060 回答
0

这个中文答案

每个字符串已经(在概念上)是一个字符序列,包括中文字符。只有当您需要将其转换为字节时,编码才会出现,而您的分配不需要。只需使用字符串的哈希码。事实上,当你创建一个 HashMap 时,这正是幕后发生的事情

于 2013-02-20T07:21:02.607 回答
0

Eclipse正在从默认设置为 UTF-8 的控制台读取。要读取数据,您需要将控制台编码更改为支持日语的编码。

在运行配置中,将编码更改为支持日语的编码,然后重试。

在此处输入图像描述

于 2013-02-20T07:30:59.283 回答