java 使用UTF-8扫描输入

ac1kyiln  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(142)

我试图找到一种方法来获取实际输入到变量中的值,这样我就可以在文件中打印它们。下面是代码示例:

String jmeno;
Scanner input= new Scanner(System.in, "utf-8");
jmeno = input.next();

我键入的内容:

Šárka

变量jméno中存储的内容:

??rka

“?”表示垃圾字符,黑框中的问号。我应该如何调整代码,使字母被变量正确接收?
我使用的计算机也有EN(US)系统编码。

nhhxz33t

nhhxz33t1#

使用new Scanner(System.in)。这使用默认的操作系统编码,与System.in使用的编码相同。String(一如既往)包含Unicode版本,然后您可以使用

new OutputStreamWriter(new FileOutputStream(...), "UTF-8")

或其他(更简单的)方法。

iq0todco

iq0todco2#

我建议你试试

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

bcs8qyzn

bcs8qyzn3#

  • 这应该是一个评论,但遗憾的是,我还没有这个特权。*

在调试时(通过将一些文本输出到文件、浏览器,或者只是在IDE中查看它们),不要急于说“它不工作,因为我在这里得到了?字符”。
也许只是你的IDE/系统无法显示那些utf-8字符。
为了确保正确,你可以从file/browser/debugger中复制输出的文本,然后将其粘贴到Notepad++(或其他具有十六进制编辑器的编辑器),然后使用view in hex,如果你看到0xefbfbd(utf-8的“无法解码”代码),那么它就坏了。否则一切正常。

相关问题