Обработка специальных символов при чтении из CSV-файла

При чтении данных из файла inputstreamreader специальные символы преобразуются в символы замены. Например, Блешано превращается в Блешано

Мой код:

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, но проблема не решается.


person A.Prakash    schedule 11.05.2018    source источник
comment
Каков тип переменной file?   -  person Karol Dowbecki    schedule 11.05.2018


Ответы (3)


Если вы используете 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 должно решить проблему. твоя проблема.

person Karol Dowbecki    schedule 11.05.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"));
person Abhishek Tiwari    schedule 11.05.2018

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

person A.Prakash    schedule 13.05.2018