Windows部署中无法正确显示特殊字符

时间:2016-03-29 07:25:36

标签: java html utf-8

我有在J2EE和ubuntu上的tomcat上部署的J2EE Web应用程序。

有一个文本“Raphaël”,我正在从本地文件(csv)系统中读取,它在ubuntu浏览器上正确显示,但它在Windows浏览器上以“RaphaÔ为单位。

我在Jsp中使用

<meta charset="utf-8"> 

此外,我也尝试过跟踪元标记,但它们不起作用。

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

这可能是什么问题?

CSV阅读代码

reader = new CSVReader(new FileReader(file));
final List<String[]> licenses =  reader.readAll();

3 个答案:

答案 0 :(得分:2)

检查CSV文件和JVM中是否有UTF-8编码。

对于JVM设置,请使用:

-Dfile.encoding=UTF8

要检查linux上的文件编码:

file --mime-encoding file.name

要在JSP页面上设置编码,请使用:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

如果这样做无助于添加过滤器以便对所有响应进行正确编码:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws ServletException
{
   request.setCharacterEncoding("UTF-8");
   chain.doFilter(request, response);
}

答案 1 :(得分:0)

将JSP contentType设置为UTF-8

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

答案 2 :(得分:0)

首先,您需要使用正确的编码来读取文件。读取文件的方式取决于J2EE服务器JVM的默认编码,它可以是任何东西。我的建议是做这样的事情:

final FileInputStream instream = new FileInputStream(file);
CSVReader reader = new CSVReader(new InputStreamReader(input, "UTF-8"));

也在JSP中设置了UTF-8编码,如上所述:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>