我有一个简单的Web应用程序,我使用JPA.
我有一个名为BlogEntry的实体.
当我提交一个新的BlogEntry时,当我调试我的应用程序时,我看到utf8字符就好了.
例如
em.persist(entity);
Run Code Online (Sandbox Code Playgroud)
在这一行中,如果我调试例如:
entity.getTitle()
Run Code Online (Sandbox Code Playgroud)
我可以成功地在IDE中看到utf-8字符.(如ğğ,或çç)
此外,我的数据库具有UTF8排序规则,我可以使用类似"INSERT INTO ..."的sql插入utf-8字符.
但是,使用JPA时,字符会保持为????
为什么会这样?
问候.
这是我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="Persistence">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.tugay.blog.core.model.Blogentry</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/blogdatabase"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="aabbccdd"/>
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
mut*_*mar 39
在persistence.xml文件的属性中使用字符编码
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/blogdatabase?useUnicode=yes&characterEncoding=UTF-8"/>
Run Code Online (Sandbox Code Playgroud)
ACV*_*ACV 14
这有助于Spring Boot:
spring.datasource.url=jdbc:mysql://localhost:3306/securitydb?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
Kor*_*gay 13
这很好地解决了它:
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
Run Code Online (Sandbox Code Playgroud)
编辑:使用hibernate 4.3.1这适用:
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">utf-8</property>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27711 次 |
| 最近记录: |