0

我对 UTF-8 字符集有一点问题。我有一个要加载和分析的 UTF-8 编码文件。我正在使用 BufferedReader 逐行读取文件。

BufferedReader buffReader = new BufferedReader(new InputStreamReader
(new FileInputStream(file),"UTF-8"));

我的问题是Java中的法线字符串方法(例如trim()和equals())不适合与我创建的循环的每次迭代中从BufferReader读取的行一起使用,以读取BufferedReader的所有内容. 例如,在编码文件中,< menu >我希望我的程序按原样处理它,但是,就目前而言,它被视为?? < m e n u >与其他一些奇怪的字符混合在一起。我想知道是否有办法删除所有字符集编码并只保留纯文本,这样我就可以使用 String 类的所有方法而不会出现复杂情况。谢谢

4

1 回答 1

0

如果您的 jdk 不是太旧(1.5),您可以这样做:

Locale frLocale = new Locale("fr", "FR");
Scanner scanner = new Scanner(new FileInputStream(file), "UTF-8");
scanner.useLocale(frLocale);

for (; scanner.hasNextLine(); numLine++) {
 line = scanner.nextLine();
}

扫描仪还可以使用除空格以外的分隔符。此示例从字符串中读取多个项目:

         String input = "1 fish 2 fish red fish blue fish";
         Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
         System.out.println(s.nextInt());
         System.out.println(s.nextInt());
         System.out.println(s.next());
         System.out.println(s.next());
         s.close(); 

prints the following output:

         1
         2
         red
         blue 

在此处查看扫描仪文档

于 2011-05-18T14:07:33.330 回答