【问题标题】:Greek characters not stored in MySQL through Hibernate Wildfly Web App希腊字符未通过 Hibernate Wildfly Web App 存储在 MySQL 中
【发布时间】:2016-06-03 22:09:47
【问题描述】:

我已经构建了一个 Java EE Web 应用程序,它将一些数据存储在 MySQL 数据库中。 数据由用户通过 Restful Web Services(AJAX 调用)和休眠 ORM 提交,使用实体管理器的 persist() 方法。

问题在于存储为“?”的希腊字符。 .

我将 mySQL 字符集和排序规则更改为 utf-8 和 utf8_unicode_ci , 我尝试通过手动将记录插入数据库来插入希腊字符,并且效果很好。

所以我在调试模式下运行应用程序,以查看在代码中以何种形式处理数据, 以及从调用 Web 服务到调用 persist() 方法的正确字符。

我正在使用 Wildfly 9。 你有什么想法? 我真的不知道还能尝试什么..

【问题讨论】:

    标签: java mysql utf-8 collation


    【解决方案1】:

    接下来检查您是否在休眠设置中添加了:

    <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
    

    【讨论】:

    • 我都做了,问题仍然存在:( ...我以这种形式添加了属性:。是吗同样的方式?还有其他想法吗?
    【解决方案2】:

    刚刚找到解决办法!

    在 Wildfly 配置 -> 子系统 -> Undertow -> Servlet/JSP -> 视图中,

    有一个选项叫做“用户监听编码”,它必须设置为true。

    【讨论】:

    • 在您更新问题之前,我不知道您使用 Wildfly。无论如何,很高兴你解决了这个问题。 )
    • 天啊——他们怎么这么神秘!
    【解决方案3】:

    这个问题的简单解决方案是在.hbm.xml文件或java实体文件的列注释中设置列属性sql-type="NVARCHAR"或sql-type="NCHAR"。

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 2011-01-09
      相关资源
      最近更新 更多