我在Java中使用重音字符时正确接收键盘输入时遇到了问题。例如,我正在尝试输入类似“présenter”的东西,但它以“pr?senter”的形式出现。我不知道如何解决这个问题 - 我一直在尝试使用ISO-8859-1编码,但我仍然无法得到它。这是我的代码的一部分:
Scanner scan = new Scanner(new InputStreamReader(
System.in, Charset.forName("ISO-8859-1")));
我也尝试过使用UTF-8,但我遇到了同样的问题。不知道还能做什么!非常感谢!!
答案 0 :(得分:2)
您是否尝试将read char序列输出到控制台?如果是这样,那就错了。控制台无法显示重音字符以及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
文件内容正确无误。 “您的输入”中的错误字符是由于本地控制台设置,但文件中的值是正确的。