可能重复: 如何使用Java中的Scanner正确读取中文字符?
我输入的文件名可能包含日语字符,我正在尝试使用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:??��??�\
我该如何纠正?
Eclipse
从控制台读取,该控制台默认设置为UTF-8。要读取数据,你需要将控制台编码更改为日语支持的编码。
在“运行配置”中,将编码更改为日语支持的编码,然后重试。
是的,当我将编码更改为UTF-16BE或UTF-16LE时,我可以查看日语输入了,非常感谢!
这具有误导性,UTF-8确实支持日语(以及与此相关的任何语言),因此应优先于Shift-JIS等传统编码