UTF-8 в строку в Java - PullRequest
       2

UTF-8 в строку в Java

0 голосов
/ 30 апреля 2011

У меня небольшая проблема с кодировкой UTF-8.У меня есть файл в кодировке UTF-8, который я хочу загрузить и проанализировать.Я использую BufferedReader для чтения файла построчно.

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

Моя проблема заключается в том, что обычные методы String (например, trim () и equals ()) в Java не подходят для использования со строкойчитать из BufferReader в каждой итерации цикла, который я создал, чтобы прочитать все содержимое BufferedReader.Например, в зашифрованном файле у меня есть < menu >, и я хочу, чтобы моя программа воспринимала его как есть, однако на данный момент он выглядит как ?? < m e n u >, смешанный с некоторыми другими странными символами.Я хочу знать, есть ли способ удалить все кодификации кодировки и оставить только простой текст, чтобы я мог без проблем использовать все методы класса String.Спасибо

1 Ответ

0 голосов
/ 18 мая 2011

Если ваш 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 

см. Документ для сканера здесь

...