首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA (Hibernate) Cyrillic字符

JPA (Hibernate) Cyrillic字符
EN

Stack Overflow用户
提问于 2013-12-25 10:49:02
回答 1查看 1.8K关注 0票数 2

我有Spring应用程序,使用JPA通过Hibernate实现。我不能使用西里尔符号,因为它们变成了“?”在数据库里。

1)将西里尔符号直接插入DB是可以的。

2)如果DB中有任何西里尔符号,则在网页上很好地显示它们。

3)我在web.xml中有这样一部分配置

代码语言:javascript
复制
 <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

....

<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

4)在IDE cyrillic符号中调试(插入到DB之前)时显示OK,但插入后选择符号是‘?’。

5)我尝试将'accept-charset=UTF-8‘设置为'form’标记,尝试将字符UTF‌​oding=UTF-8添加到DB中,尝试设置以下hibernate属性:

代码语言:javascript
复制
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.connection.characterEncoding" value="UTF-8"></property>
<property name="hibernate.connection.useUnicode" value="true"></property>

还有什么不对的?为什么西里尔符号仍然会变成“?”?!

附注:Ubuntu13.04,MySQL 5.5,Spring3.2,SpringRoo1.2.3

upd:基本得到了解决方案:我生成了ru_RU和ru_RU.UTF-8系统区域设置,并将locale设置为ru_RU.UTF-8。详细说明是here。而且,我无法解释为什么,一切都很好!

p.p.s.不需要“5”中的characterEncoding和useUnicode属性。字符编码=UTF-8参数需要添加到连接字符串中。

EN

回答 1

Stack Overflow用户

发布于 2013-12-26 06:41:09

编辑MySQL设置/etc/mysql/my.cnf并强制所有连接遵守UTF-8:

代码语言:javascript
复制
[client]
default-character-set = utf8

[mysqld]
init-connect='SET NAMES utf8'
character-set-server = utf8
collation-server = utf8_general_ci

[mysql]
default-character-set = utf8

建议在重新配置数据库后重新创建数据库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20771938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档