springmvc+hibernate+mysql save数据到数据库乱码

出现乱码的原因很多,有可能是在前台传输到后台出现乱码,也有可能是再保存到数据库中为乱码,下面说一下一般出现乱码要考虑因素,

 

第一,查看数据库的字符集和项目的编码方式是否一致,不一致请统一.

以我这次的问题为例:

mysql数据库的字符集
springmvc+hibernate+mysql save数据到数据库乱码_第1张图片

项目设置的编码方式:
springmvc+hibernate+mysql save数据到数据库乱码_第2张图片

 

项目web.xml配置的编码:
springmvc+hibernate+mysql save数据到数据库乱码_第3张图片

 

第二,在spring配置文件中配置方言,org.hibernate.dialect.MySQLDialect


springmvc+hibernate+mysql save数据到数据库乱码_第4张图片
 

第三,jdbc数据库连接字符串是否设置了编码,我是在jdbc.properties文件配置的



 

第四,使用spring注解,@ResponseBody乱码

需要配置:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=UTF-8</value>
							<value>text/html;charset=UTF-8</value>
						</list>
					</property>
				</bean>
				<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>
								application/json;charset=UTF-8
							</value>
							<value>
								application/x-www-form-urlencoded;charset=UTF-8
							</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
</bean>

 

目前想到的就是这些,欢迎留言补充其它原因.

 

 

再做个补充,

使用spring @ResponseBody 注解时候,如果返回一个结果字符串有时候在页面上也会出现乱码情况,这时候你可以调整一下spring配置文件中

<!-- 注解的支持 -->
	<mvc:annotation-driven />

的位置,注意要放到转换器后面,也就是上面说的第四点的配置.

 

 

 


 

你可能感兴趣的:(乱码,设置编码,hibernate乱码)