我试图找到一种方法来获取实际键入变量的值,以便我可以在文件中打印它们。问题是扫描仪无法识别捷克字母,如“ř;á;ž;š”等。 这是代码示例:
String jmeno;
Scanner input= new Scanner(System.in, "utf-8");
jmeno = input.next();
我输入的内容:
Šárka
变量jméno中存储的内容:
??rka
“?”代表垃圾字符,黑框中的问号。 我应该如何调整代码,以便变量正确地收到字母?
我使用的电脑也有EN(美国)系统编码。
答案 0 :(得分:1)
使用new Scanner(System.in)
。这使用默认操作系统的编码,与System.in使用的编码相同。 String(一如既往)包含Unicode版本,然后您可以使用
new OutputStreamWriter(new FileOutputStream(...), "UTF-8")
或其他(更简单)的方法。
答案 1 :(得分:0)
这应该是一个评论,但遗憾的是我还没有这个特权。在调试时(通过将一些文本输出到文件,浏览器或者只是在IDE中观看它们),不要急于说“它不起作用,因为我得到了?字符”。也许只是你的IDE /系统无法显示那些utf-8字符。要确定,您可以从文件/浏览器/调试器复制输出的文本,然后将其粘贴到Notepad ++(或其他具有十六进制编辑器的编辑器),然后使用view in hex
,如果看到{{1} (utf-8的“无法解码此”代码),然后它就坏了。一切都很好。
答案 2 :(得分:-1)
我建议你试试
Scanner input= new Scanner(System.in, "ISO-8859-1");
编辑: 正如你所说,一些角色仍然无法正常工作,请考虑尝试:
Scanner input= new Scanner(System.in, "ISO-8859-2");
“ISO-8859-2”支持捷克Check this for more information