我有一个扫描仪类将文件读入字符串。具有此字符“®”的任何文件都会导致其失败。我是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);
}
}
答案 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编码即可。