【问题标题】:How can I fix charset encoding when I use RequestDispatcher include a html file?当我使用 RequestDispatcher 包含 html 文件时,如何修复字符集编码?
【发布时间】:2014-11-03 21:44:42
【问题描述】:

我有一个使用 JSP 和 Servlet 登录和注册动态 Web 项目。

register.htm 区域有:
<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 的内容。 (如 Ä�ể đăng ký tà i khoản, bạn cần đồng ý vá»›i
我该如何解决?

【问题讨论】:

  • 这个字符串是从哪里来的?在代码或数据库中硬编码?
  • 来自register.html。

标签: java html jsp servlets dispatcher


【解决方案1】:

在开始写入响应的输出流或写入器之前,您必须设置所有 HTTP 标头。

当你开始写信给作者时,你必须先写&lt;HTML&gt;&lt;HEAD&gt;标签,但在你的例子中你写&lt;font&gt;

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

当您调用 rd.include(request, response); 时,您已经在输出中写入了一些您不想要的内容。

【讨论】:

  • errorsMsg 显示完美,但来自 register.html 的文本不好
  • @storky 也检查源文件的编码
  • @cy3er 是 UTF8 编码!
  • 检查您在浏览器中获得的页面的源代码。如果它以您的&lt;font&gt; 开头,那就不好了。您不能写信给作者,然后包含一个完整的 HTML 页面。那么HTML页面的编码可能会被省略。
  • @icza 我认为它与“out.println("" + errorsMsg + "");" 无关。我想修复 register.html 中在浏览器中显示错误的文本编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2022-12-06
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多