java - 键盘输入带有重音字符 : Java

标签 java character-encoding java.util.scanner non-ascii-characters

当 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/

相关文章:

java - Scala 反射 : why getMethods can return the val members?

c# - 为什么 C# 不允许 const 和 static 在同一行?

java - mysql导入表中数据报错异常

python - 将中文字符转换为 XML/HTML 样式的数字实体并转换为 Unicode UTF-8?

java - Java中如何判断字符串是否为ASCII码

java - Arraylist 删除重名并修改另一个 arraylist

Java解析UTF8

java - 用户输入后如何将焦点返回到扫描仪?

Java 服务器-客户端 |服务器不会收到第二个请求

java - .hasNextInt 的替代方法?