使用Java从网页导出日文字符后,日文字符显示不正确

时间:2016-02-10 10:31:08

标签: java utf-8

我有一个richfaces页面,您可以将数据表的内容导出到csv,xls,xml或pdf文件。我正面临导出日文字符的问题。

テスト商品等字符在导出的文件(所有格式)中显示为テスト商品

然而,其他字符如Tシャツ正确显示。该应用程序部署在tomcat和websphere上,此问题仅发生在websphere实例上。

我尝试在websphere上为通用JVM参数添加-Dclient.encoding.override = UTF-8,但这并没有解决问题。我还尝试在encoding.properties文件中将日语的编码更改为UTF-8,但这也没有解决它。

这是用于导出到csv的java代码的示例:

//response in an HttpServletResponse
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-disposition","attachment; filename=workbook.csv");
StringBuffer txtBuffer = new StringBuffer();
ServletOutputStream out = response.getOutputStream();
DataExporter.getCSVWorkbook(lstToBeExported, txtBuffer);
byte[] bytes = txtBuffer.toString().getBytes("UTF-8");
out.write(bytes);
out.close();

有没有人知道为什么这对某些角色而不是其他角色有用,为什么它适用于tomcat但不适用于websphere?

1 个答案:

答案 0 :(得分:0)

我添加了一个过滤器来对字符进行编码,然后再将它们从浏览器传输到服务器,它解决了这个问题。问题是他们在到达服务器之前被错误编码。