在此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     | 

我应该进行哪些更改才能使其正常工作?谢谢

请您参考如下方法:

解:
可以通过将附加 header (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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!