Проблема с акцентами при создании CSV-файла в Grails - PullRequest
1 голос
/ 08 июня 2011

в этом приложении Grails я экспортирую регистры базы данных в csv-файл, используя код:

response.setHeader "Content-disposition", "attachment; filename=creds.csv"
response.contentType = 'text/csv; charset=UTF-8'
response.setCharacterEncoding("UTF-8")
response.outputStream << respstr
response.outputStream.flush()

, и файл, загруженный браузером, имеет проблемы с акцентами.

Я могусказать, что данные в БД в порядке, потому что я также реализовал генерацию файлов xls, используя apache.poi. *, и акценты отображаются отлично.

psql -l возвращает:

Name     |  Owner   | Encoding  | Collation | Ctype |
mydb     | postgres | SQL_ASCII | C         | C     |

Что я должен изменить, чтобы это работало?Спасибо

Ответы [ 2 ]

2 голосов
/ 09 ноября 2012

Решение: Это можно решить, добавив дополнительный заголовок (BOM, маска байтов) в загруженный файл CSV.

response.setContentType("application/vnd.ms-excel:UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=myOutputFile.csv");

// Excel does not recongize the UTF-8, add additional header (BOM) for excel
OutputStream outputStream = response.getOutputStream();
outputStream.write(0xEF);  
outputStream.write(0xBB);
outputStream.write(0xBF);   

Источник: http://yp -javadev.blogspot.com / 2012/04 / resolved-download-csv-with-utf-8.html

0 голосов
/ 09 июня 2011

Если это сломанная БД, то я рекомендую вам исправить ее на уровне БД - конвертировать кодировку / сопоставление в UTF-8.

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

...