Java Scanner Class坏字符"®"

Min*_*bob 25 java unicode

我有一个扫描仪类将文件读入字符串.具有此字符"®"的任何文件都会导致其失败.我是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);

   }
      }
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 17

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

构造一个新的Scanner,它生成从指定文件扫描的值.使用底层平台的默认字符集将文件中的字节转换为字符.

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

Scanner file = new Scanner(new File(fileName), StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)


Jer*_*eph 10

创建扫描仪时提及编码.

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

  • 谢谢你的领导,utf-8对我不起作用,但是当我使用ISO-8859-1时它确实如此.看起来我需要阅读一点点.谢谢. (2认同)