我在使用 UTF-8 字符时遇到了困难。这是一个简单的 JSF 项目。我使用 JSF 2.2 和 Glassfish 4.0
我有一个方法:
em.persist(user);
当我调试
user.getName()
在这一点上,我可以在我的 IDE 中看到 utf-8 字符。此外,我将字符串保存在会话中 - bean,我也可以在浏览器上看到它们。
只有当它们被持久化到数据库时,它们才会被持久化为:?????
我也可以自己编辑数据库并保存 utf-8 字符。我的意思是,我的 SQL 配置适用于 UTF-8。
问题出在 JPA 中。
这是我尝试过的:(一起:)
持久性.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="Persistence" transaction-type="JTA">
<jta-data-source>fus</jta-data-source>
<class>com.tugay.fup.core.model.User</class>
<properties>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/fus?useUnicode=yes&characterEncoding=UTF-8"/>
</properties>
</persistence-unit>
</persistence>
这是 glassfish-web.xml:
<glassfish-web-app>
<parameter-encoding default-charset="UTF-8"/>
</glassfish-web-app>
我正在使用由容器管理的EntityManager(事务类型= JTA)
所以在 Glassfish 的 JDBC 连接池中,我有:
jdbc:mysql://localhost:3306/fus?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8
对于:属性:URL...
然而,这些都没有帮助。
仍然没有正确保留字符。