Java Scanner Class 坏字符 “®”

2022-09-01 19:14:45

我有一个扫描仪类将文件读取到字符串中。任何具有此字符 “®” 的文件都会导致其失败。我是Java的新手,有没有更好的方法来读取这个文件,以便接受该字符?

public void readFile(String fileName)
{
    fileText = "";

    try
    {
        Scanner file = new Scanner(new File(fileName));
        while (file.hasNextLine())
        {
            String line = file.nextLine();
            fileText += line +"\r"+"\n";
        }
        file.close();
    }
    catch (Exception e)
    {
         System.out.println(e);

   }
      }

答案 1

默认情况下,Scanner 使用平台默认字符编码,这可能与文件的字符编码不匹配。JavaDoc 指出:

构造一个新的扫描仪,该扫描仪生成从指定文件扫描的值。文件中的字节使用基础平台的默认字符集转换为字符。

首先确定文件所在的字符编码,这可以使用 Linux命令行实用程序 。将正确的编码传递到扫描仪中。Java 7 在 java.nio.charset.StandardCharsets 中包含一些已知字符集的预定义常量。file -i

Scanner file = new Scanner(new File(fileName), StandardCharsets.UTF_8);

答案 2

在创建扫描仪时提及编码。

Scanner file= new Scanner(new File(fileName), "utf-8");


推荐