使用扫描仪阅读日语字符

时间:2013-02-20 07:19:15

标签: java encoding java.util.scanner

可能重复: How can I read Chinese characters correctly using Scanner in Java?

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

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:??��??�\

我该如何纠正这个?

3 个答案:

答案 0 :(得分:2)

您的代码是正确的,唯一的问题是您正在阅读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")));

希望这会有所帮助!!

答案 1 :(得分:0)

Chinese的答案

每个字符串已经(概念上)是一系列字符,包括中文字符。只有当您需要将字符串转换为字符时才会进行编码,而您不需要将其转换为字符。只需使用String的哈希码即可。事实上,当你创建一个HashMap时,那就是场景背后会发生什么

答案 2 :(得分:0)

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

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

enter image description here