未通过 Hibernate Wildfly Web App 存储在 MySQL 中的希腊字符
Greek characters not stored in MySQL through Hibernate Wildfly Web App
我已经构建了一个 Java EE Web 应用程序,它将一些数据存储在 MySQL 数据库中。
用户使用实体管理器的 persist() 方法,通过 Restful Web 服务(AJAX 调用)和休眠 ORM 提交数据。
问题来自于存储为“?”的希腊字符。 .
我将 mySQL 字符集和排序规则更改为 utf-8 和 utf8_unicode_ci ,
我尝试通过手动将记录插入数据库来插入希腊字符,但效果很好。
所以我 运行 应用程序处于调试模式,以查看在代码中以何种形式处理数据,
以及从调用 Web 服务到调用 persist() 方法期间正确的字符。
我正在使用 Wildfly 9。
你有什么想法?
我真的不知道还能尝试什么..
检查您是否在休眠设置中添加了下一步:
<property name="hibernateProperties">
<props>
...
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
</props>
</property>
并检查您的数据源连接 url 是否如下所示:
jdbc:mysql://localhost:3306/mydatabase?characterEncoding=UTF-8&useUnicode=true
刚刚找到解决方案!
在 Wildfly 配置 -> 子系统 -> Undertow -> Servlet/JSP -> 查看,
有一个名为 "User listener encoding" 的选项,必须将其设置为 true。
此问题的简单解决方案是在 .hbm.xml 文件或列注释中设置列属性 sql-type="NVARCHAR" 或 sql-type="NCHAR"在 java 实体文件中。
我已经构建了一个 Java EE Web 应用程序,它将一些数据存储在 MySQL 数据库中。 用户使用实体管理器的 persist() 方法,通过 Restful Web 服务(AJAX 调用)和休眠 ORM 提交数据。
问题来自于存储为“?”的希腊字符。 .
我将 mySQL 字符集和排序规则更改为 utf-8 和 utf8_unicode_ci , 我尝试通过手动将记录插入数据库来插入希腊字符,但效果很好。
所以我 运行 应用程序处于调试模式,以查看在代码中以何种形式处理数据, 以及从调用 Web 服务到调用 persist() 方法期间正确的字符。
我正在使用 Wildfly 9。 你有什么想法? 我真的不知道还能尝试什么..
检查您是否在休眠设置中添加了下一步:
<property name="hibernateProperties">
<props>
...
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
</props>
</property>
并检查您的数据源连接 url 是否如下所示:
jdbc:mysql://localhost:3306/mydatabase?characterEncoding=UTF-8&useUnicode=true
刚刚找到解决方案!
在 Wildfly 配置 -> 子系统 -> Undertow -> Servlet/JSP -> 查看,
有一个名为 "User listener encoding" 的选项,必须将其设置为 true。
此问题的简单解决方案是在 .hbm.xml 文件或列注释中设置列属性 sql-type="NVARCHAR" 或 sql-type="NCHAR"在 java 实体文件中。