Java Scanner Class坏字符“®”

时间:2016-11-17 20:11:10

标签: 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);

   }
      }

3 个答案:

答案 0 :(得分:16)

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

  

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

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

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

答案 1 :(得分:10)

创建扫描仪时提及编码。

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

答案 2 :(得分:0)

在创建Scanner类的实例时,您只需要提及UTF-8编码即可。