当 Java 中包含重音字符时,我无法正确接收键盘输入。例如,我尝试输入类似“présenter”的内容,但它输入为“pr?senter”。我不知道如何解决这个问题 - 我一直在尝试使用 ISO-8859-1 编码,但我仍然无法得到它。这是我的代码的一部分:
Scanner scan = new Scanner(new InputStreamReader(
System.in, Charset.forName("ISO-8859-1")));
我也尝试过使用UTF-8,但遇到了同样的问题。不知道还能做什么!非常感谢!!
最佳答案
您是否尝试将读取的字符序列输出到控制台?如果是这样,那就错了。控制台无法显示重音字符以及 UTF-8 编码字符。只需尝试将您的输入写入文件(作为 UTF-8),然后检查文件。
以下代码产生正确的结果:
String charset = "ISO-8859-1";
Scanner scan = new Scanner(System.in, charset);
System.out.print("Enter your text line: ");
String line = scan.next();
System.out.println("Your input: " + line);
File file = new File("out.txt");
FileOutputStream fos = new FileOutputStream(file);
fos.write(line.getBytes(charset));
fos.close();
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String readLine = br.readLine();
System.out.println("Your input (loaded from file): " + readLine);
br.close();
fr.close();
输出为:
Enter your text line: présenter
Your input: présenter
Your input (loaded from file): présenter
文件内容正确。 “您的输入”的错误字符是由于本地控制台设置造成的,但文件中的值是正确的。
关于java - 键盘输入带有重音字符 : Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20842928/