Обработка специальных символов при чтении из CSV-файла - PullRequest
0 голосов
/ 11 мая 2018

При чтении данных из файла inputstreamreader преобразует специальные символы в заменяющие символы.Например, BleȬÁno конвертируется в Ble? Áno

Мой код:

public String getUploadFileAsString() {
    try {
        final InputStream stream = file.getInputStream();
        final StringWriter writer = new StringWriter();
        IOUtils.copy(stream, writer, IrisHttpCommon.UTF8Charset);
        return writer.toString();
    } catch (final IOException e) {
        throw new IrisException("exception in getUploadFileAsString()", e);
    }
}

Я пробовал IOUtils, CharStream, Scanner, BufferedReader, InputStreamReaderно ничто не решает проблему.

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Если вы работаете на Java 8, вы можете попробовать:

Path path = Paths.get(...);
Charset charset = StandardCharsets.UTF_8;
try (BufferedReader br = Files.newBufferedReader(path, charset)) {
  return br.lines().collect(Collectors.joining());
}

Указание правильного ввода Charset должно решить вашу проблему.

0 голосов
/ 13 мая 2018

Спасибо за ваши ответы. Но проблема в кодировке. Файл должен иметь кодировку, которую вы используете в своем коде. Я изменил кодировку на UTF-8 через notepad ++, и теперь она работает.

0 голосов
/ 11 мая 2018

Записать файл в UTF-8 следующим образом

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8"));

targetFile - это экземпляр файла, в который вы хотите записать содержимое.

Аналогичным образом применяется для чтения содержимого файла.

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile, "UTF-8"));
...