我有在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();
答案 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" %>