Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Как на Java записать символы валют в CSV файл для корректного импорта в Excel

#java #excel #csv


При импорте получившегося CSV файла в Excel знаки валют, кроме € и $ заменяются на
?. В Notepad++ все отображается нормально.

String data = "$,€,₪,₴,zł,kr,£,..."

String fileName = "C:\\Program Files\\Java\\apache-tomcat-7.0.68\\temp\\testCSV.csv";

String uncode = "UTF-8";

//uncode = "UTF-8", "UTF-16", "UTF-16BE", "UTF-16LE", "Cp866", "Cp1251", "US-ASCII",
"ISO-8859-1";


Пробовал разные варианты:


FileWriter out = new FileWriter(fileName);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(fileName),uncode);
PrintWriter out = new PrintWriter(fileName, uncode));
PrintWriter out = new PrintWriter (new OutputStreamWriter (new FileOutputStream (fileName),
uncode));
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),
uncode));
:

File f = new File(fileName);
FileUtils.writeStringToFile(f, data, uncode);
out.append(data);
//out.write(data); //out.println(data);



В чем может быть проблема?
    


Ответы

Ответ 1



Я могу ошибаться, но насколько помню, MS Excel не распознает UTF-8 без BOM (Byte Order Mark), т.ч. попробуйте как-то так: BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(new FileOutputStream("file.txt", true), "utf8")); writer.append('\uFEFF'); writer.append("мама мыла раму"); Проверка » /usr/bin/printf "\ufeff...\n" | file file.txt file.txt: UTF-8 Unicode (with BOM) text, with no line terminators В то же время, большинству текстовых редакторов BOM не интересен, поэтому в них у вас текст отображается нормально.

Комментариев нет:

Отправить комментарий