【问题标题】:Glassfish JSF 2.0 charset problemGlassfish JSF 2.0 字符集问题
【发布时间】:2011-05-02 11:07:18
【问题描述】:

我正在开发一个使用 JSF 2.0 (Mojarra 2.0.3) 前端开发并部署在 Glassfish v.3.0.1 服务器上的项目。应用程序必须接受 ISO-8859-2 字符集并将数据写入 MySql 数据库。 问题是数据不在正确的字符集中。 请求Http头有属性值:

content-type: application/x-www-form-urlencoded; charset=UTF-8

问题不在于响应,因为从数据库读取数据时可以正确显示数据。此外,MySql 连接 URL 应该是正确的,因为它是为 latin2 集合设置的。我什至尝试创建custom filter,但没有任何结果。

有什么想法可以接受正确的字符集吗?

提前致谢。

【问题讨论】:

  • 如果您使用的是 JSF 2.0,我猜您使用的是 Facelets。然后,您是否在 Facelet (XHTML) 页面的顶部有这个 <?xml version="1.0" encoding="UTF-8" ?>。只需将 UTF-8 更改为 ISO-8859-2。另外,检查您是否定义了类似<meta http-equiv="content-type" content="text/html;charset=UTF-8"/> 的元标记。也将其编码更改为 ISO-8859-2。最后,检查您的 MySQL 表的 DEFAULT CHARSET=ISO-8859-2 定义。如果不是 ISO-8859-2,则使用ALTER TABLE SQL 命令进行更改。应该是这样的。 -:)
  • @user463053 感谢您的回复。不幸的是,我放弃了尝试将编码设置为 ISO-8859-2 并切换到 UTF-8 编码。是的,我正在使用 Facelets,我的页面有 <?xml version="1.0" encoding="ISO-8859-2"> 标签。 MySql 默认字符集设置为 latin2,connectionURL 包含useUnicode=true&characterEncoding=ISO8859_2&characterSetResults=latin2。但是,我会再试一次。
  • 如果您将所有内容设置为 ISO-8859-2 后仍然无法正常工作,您可以随时编写过滤器(请参阅我的回答)来强制 ISO-8859-2 编码。但是,将其更改为 UTF-8 应该对您有用,因为可以在 UTF-8 中找到 ISO-8859-2 字符集 - 并且成为 UTF-8 意味着您将来可以为其他语言添加其他字符集而不会大惊小怪. :)

标签: character-encoding httpwebrequest jsf-2 content-type glassfish-3


【解决方案1】:

您始终可以通过创建过滤器并将其定义在您的 web.xml 中来强制执行 ISO-8859-2 编码。过滤器至少应该:

public class CustomFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
       try {
          if ((request instanceof HttpServletRequest)
              && (response instanceof HttpServletResponse))  {
              request.setCharacterEncoding("ISO-8859-2");
              response.setContentType("text/html; charset=ISO-8859-2")
           }
           chain.doFilter(request, response);
        } catch (Exception e) {
           // Do your logging here
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2011-07-12
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多