在Grails中生成csv文件时重音问题

时间:2011-06-08 13:14:37

标签: grails csv export diacritics

在这个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()

并且浏览器下载的文件存在重音问题。

我可以告诉数据库中的数据是可以的,因为我还使用apache.poi。*实现了xls文件的生成,并且重音显示得很好。

psql -l返回:

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

我应该更改什么才能使其正常工作?感谢

2 个答案:

答案 0 :(得分:2)

解决方案: 可以通过向下载的CSV文件添加添加标题(BOM,字节顺序掩码)来解决此问题。

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

答案 1 :(得分:0)

如果这是一个破坏的DB协作,那么我建议你在数据库级别修复它 - 将编码/整理转换为UTF-8。

如果不可能,您可以尝试: