可能重复: 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:??��??�\
我该如何纠正这个?
答案 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。要读取数据,需要将控制台编码更改为日语支持的编码。
在“运行配置”中,将编码更改为日语支持的编码,然后重试。