1

我有最简单的 JSF2 表单,在 MySQL 数据库中插入一个表字段。

我的小脸<?xml version="1.0" encoding="UTF-8"?>在顶部。

我的输入是这样的<h:inputText value="#{testController.entity.test}" id="test" />

所以我尝试在我的 Jpa2/Hibernate 实体中插入“ provà ”。然后我坚持它,当我在我的 MySQL 数据库中查找保存的值时......

我找到“ provà ”。这是我总是通过尝试和尝试来解决的老编码问题......

你能建议我先检查什么来修复它吗?

我的意思是,我知道这个问题缺乏信息,我只是想看看你问我什么:在你的问题中我会找到答案!:)

4

2 回答 2

1

我的小脸<?xml version="1.0" encoding="UTF-8"?>在顶部。

这与问题无关。这只会告诉 XML 解析器在读取 XML 文件内容时使用哪个字符集,然后再将其解析为基于树的层次结构。

您的具体问题可能有两个可能的原因:

  1. HTTP 请求字符编码设置不正确。然而,这不是正常情况,因为默认情况下 JSF/Facelets 已经在所有层中使用 UTF-8。但是,只要在 JSF/Facelets 设置正确的字符编码之前,有其他东西访问了 HTTP 请求正文,就会出现此问题。众所周知,PrimeFaces 3.x 可以做到这一点。另请参阅通过 PrimeFaces 输入组件检索到的 Unicode 输入已损坏。解决此问题的方法之一是创建一个过滤器,看起来就像在 JSF 中提交的 UTF-8 表单中的那样,正在破坏数据

  2. JDBC 连接字符编码设置不正确。MySQL JDBC 驱动程序使用客户端平台默认字符编码而不是服务器表字符编码。确保您的 MySQL JDBC URL 如下所示:

    jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
    
于 2012-06-14T13:52:36.447 回答
0

尝试将h:form acceptcharset="UTF-8"放入您的 xhtml(为我工作):

于 2012-06-14T11:11:12.943 回答