gpt4 book ai didi

java - 保存实体时 Spring/Hibernate 编码错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:45 25 4
gpt4 key购买 nike

我在使用 Hibernate 保存表单数据时遇到问题,基本上编码出错,因此奇怪的字符被保存在数据库中并作为表单输入的结果填充。这是我到目前为止准备的配置:

在 web.xml 中

 <filter>
<filter-name>SetCharacterEncodingFilter</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>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

在 applicationContext.xml 中(尝试了“UTF-8”和“utf8”两种模式)

<property name="url" value="jdbc:postgresql://localhost:5432/mydb?characterEncoding=UTF-8" />

...

<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>
<prop key="hibernate.connection.CharSet">utf8</prop>
<prop key="hibernate.connection.characterEncoding">utf8</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
<prop key="show_sql">true</prop>

<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">20</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">3000</prop>
</props>
</property>

pom.xml

<properties>
<spring.version>4.1.2.RELEASE</spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

数据库、jsp 文件和项目也有 ut8 编码,我还在 server.xml 中的连接器配置中添加了 URIEncoding="UTF-8"。我还需要添加什么或者我做错了什么?

最佳答案

您可以设置断点并检查从字节 (UTF-8) 到 Unicode 的编码是否正确完成。接下来要做的就是检查数据库/表的排序规则。当您创建数据库/表时,您指定排序规则,相当于字符集(您通常在安装过程中选择默认值),如果这不支持您存储的字符,您可能会得到垃圾。

关于java - 保存实体时 Spring/Hibernate 编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40731375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com