JPA/hibernate 使用 Intelli-J 执行 sql 脚本时编码 UTF-8 问题
Encoding UTF-8 problem while JPA/hibernate execute sql-script with Intelli-J
我正在开发一个 Jee webapp,使用 JPA/Hibernate 作为 ORM 框架,PostgreSQL 作为数据库,Tomcat 作为服务器。
当我启动应用程序时,我希望 entitymanager 在我的数据库中注入一些数据。
我这样做
<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql"/>
在persistence.xml
一切正常,除了我得到一些错误的编码,比如 "Ardèche" 而不是 "Ardèche"。
我的整个项目都是 utf-8,我的数据库也是。
我在使用 tomcat 的 Intelli-j 终端中遇到了编码输出问题,我设法使用帮助 | 中的 -Dfile.encoding=UTF-8 解决了这个问题编辑自定义 VM 选项。
但是我的数据库中的数据仍然是错误的,即使在 Intelli-J 输出中我得到了好的结果。
如果我直接在 pgadmin 中执行脚本就没有问题。
我尝试了我能找到的一切来解决这个问题,但没有任何效果。
我现在可能在配置上有冲突,因为我尝试了太多不同的东西。
我的 persistence.xml
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/DB" />
<property name="javax.persistence.jdbc.user" value="db" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
<property name="hibernate.connection.autocommit" value="true" />
</properties>
这是我在 Whosebug 上的第一条消息,所以我希望我做的一切都正确!
谢谢!
感谢您的回答,我刚刚通过将 <property name="hibernate.hbm2ddl.charset_name" value="UTF-8"/>
添加到 persistence.xml 来修复它。我没有充分检查休眠文档!
我正在开发一个 Jee webapp,使用 JPA/Hibernate 作为 ORM 框架,PostgreSQL 作为数据库,Tomcat 作为服务器。 当我启动应用程序时,我希望 entitymanager 在我的数据库中注入一些数据。 我这样做
<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql"/>
在persistence.xml 一切正常,除了我得到一些错误的编码,比如 "Ardèche" 而不是 "Ardèche"。
我的整个项目都是 utf-8,我的数据库也是。 我在使用 tomcat 的 Intelli-j 终端中遇到了编码输出问题,我设法使用帮助 | 中的 -Dfile.encoding=UTF-8 解决了这个问题编辑自定义 VM 选项。 但是我的数据库中的数据仍然是错误的,即使在 Intelli-J 输出中我得到了好的结果。
如果我直接在 pgadmin 中执行脚本就没有问题。
我尝试了我能找到的一切来解决这个问题,但没有任何效果。 我现在可能在配置上有冲突,因为我尝试了太多不同的东西。 我的 persistence.xml
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/DB" />
<property name="javax.persistence.jdbc.user" value="db" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
<property name="hibernate.connection.autocommit" value="true" />
</properties>
这是我在 Whosebug 上的第一条消息,所以我希望我做的一切都正确! 谢谢!
感谢您的回答,我刚刚通过将 <property name="hibernate.hbm2ddl.charset_name" value="UTF-8"/>
添加到 persistence.xml 来修复它。我没有充分检查休眠文档!