如何在使用RequestDispatcher时修复字符集编码包含html文件?

问题描述:

我有一个使用JSP和Servlet登录并注册动态Web项目。如何在使用RequestDispatcher时修复字符集编码包含html文件?

register.htm AREADY有:
<meta charset="UTF-8">

注册servlet有:

`response.setContentType("text/html; charset=UTF-8"); 
    `response.setCharacterEncoding("UTF-8");` 
    `response.setHeader("Cache-Control", "no-cache");` 
    `request.setCharacterEncoding("UTF-8");` 

当用户提交(以register.html),如果它有一些错误,注册Servlet的事:

RequestDispatcher rd = getServletContext().getRequestDispatcher("/register.html"); PrintWriter out = response.getWriter(); out.println("<font color=red>" + errorsMsg + "</font>"); rd.include(request, response);
然后,浏览器显示的内容不是UTF8。 (像AA»ƒÄ'ăngkýTA我khoảN,bạncầnÃ'»“NGå½VA»>我
我怎样才能解决这个问题?

+0

这个字符串从哪里来?在代码或数据库中进行硬编码? – cy3er 2014-09-10 09:48:18

+0

它来自register.html。 – storky 2014-09-10 09:52:48

你有你开始写入响应的输出流或作家之前设置所有HTTP头

当你开始写的作家,你必须先写<HTML><HEAD>标签,但在你的例子你写<font>

PrintWriter out = response.getWriter(); 
out.println("<font color=red>" + errorsMsg + "</font>"); 

当你打电话rd.include(request, response);你已经写了一些东西到输出,这不是你想要的。

+0

errorsMsg显示完美,但文本来自register.html是坏 – storky 2014-09-10 09:55:46

+0

@storky检查您的源文件的编码也是 – cy3er 2014-09-10 10:13:36

+0

@ cy3er它是UTF8编码! – storky 2014-09-10 10:19:47