При импорте получившегося 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);
В чем может быть проблема?
Ответ
Я могу ошибаться, но насколько помню, 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...
" | file file.txt
file.txt: UTF-8 Unicode (with BOM) text, with no line terminators
В то же время, большинству текстовых редакторов BOM не интересен, поэтому в них у вас текст отображается нормально.
Комментариев нет:
Отправить комментарий