我在使用 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...
然而,这些都没有帮助。
仍然没有正确保留字符。