Проблема при чтении специальных символов из файла - PullRequest
1 голос
/ 26 июня 2011

У меня возникла проблема при чтении файла со специальными символами.Мой файл .txt содержит данные:

Я читаю этот файл, используя следующий код:

StringBuilder sBuilderString = new StringBuilder();

for (int n; (n = loInputStream.read()) != -1;) {
    sBuilderString.append((char)n);
}

Эта строка теперь снова используется для записи файла, проблема в том, что когда я пишуфайл, один из этих двух символов заменяется другим специальным символом.

Как мне написать код, который может прочитать все специальные символы и записать его в другой файл?

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

У вас проблемы с кодировкой ваших персонажей. Вызов '(char) n) эффективно преобразует байт n в символ с использованием кодировки символов по умолчанию вашей системы, которая может отличаться от кодировки вашего исходного файла.

Один из способов избежать этого - заключить ваш InputStream в CharacterInputStream, где вы можете указать кодировку символов:

Reader reader = new InputStreamReader( loInputStream, "UTF-8");

Затем вы можете перейти к чтению вашего потока в вашем StringBuilder. Я бы также порекомендовал обернуть ваш читатель bufferedReader для улучшения производительности с блокировкой потоков ввода-вывода.

Reader reader = new BufferedReader(new InputStreamReader( loInputStream, "UTF-8"));
1 голос
/ 26 июня 2011

Используйте InputStreamReader и укажите кодировку, которая используется в файле.

...