gpt4 book ai didi

java - 以 UTF-8 格式从键盘读取

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:51 24 4
gpt4 key购买 nike

我需要读取用户的输入,并且我希望支持非拉丁字母,例如 Å、Ä 和 Ö。

BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "UTF-8"), true);
out.println(keyboard.readLine());
out.println("Read with charset: " + Charset.defaultCharset().name());

当我运行这段代码并输入一个拉丁字母时,它按预期工作(我输入了一些东西,按回车键,它打印出我输入的内容)。但是如果我尝试使用 å 我会得到这个:

å


Read with charset: UTF-8

如果文本以非拉丁字母结尾,我必须按两次回车键,然后就无法正确显示它们。我已经在 Netbeans 的控制台和 Windows 命令提示符中尝试过这个,但都没有给出预期的结果。


我找不到使用 UTF-8 的解决方案,而是使用了 ISO-8859-1。当我第一次运行 chcp 28591 时,它与我的 Netbeans 控制台(绝对应该是 UTF-8)和 CMD 一起工作,更改字体(在我的情况下这是必要的)并运行我的程序。

最佳答案

代码示例没有以任何方式正确编码。它使用系统默认值从控制台读取数据,然后使用 UTF-8 将其写出。您的系统默认值可能不是 UTF-8,更复杂的是,您的控制台可能与系统默认值相同也可能不同。

要在控制台中正确执行此操作,您需要使用控制台编码读入,并使用控制台编码写出。例如,如果您只是对此进行测试并需要写入文件,请将其写入为 UTF-8 并确保使用文本编辑器将其打开为 UTF-8。

关于java - 以 UTF-8 格式从键盘读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28916928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com