web项目中文乱码问题实践经验(springmvc +hibernate)

    1、前台有没有乱码,如果没有,查看传递参数层有没有乱码【我得到的结果是没有】
    2、jsp页面传递参数到后台代码中,看到参数是否为中文【有乱码,为一堆问号???】
解决方案:

(1).通过GET方式传参,通过new String(request.getParameter("").getBytes("ISO-8859-1"),"UTF-8"); 的方式转换为需要的编码,如UTF-8等

(2).通过POST方式传参,通过声明request.setCharacterEncoding("UTF-8");的方式声明编码类型来解决。

【注意前端jsp的提交方式post或者get要与以上解决方案对应】


除此之外还有 tomcat 配置,位置 tomcat->conf->server.xml,加入URIEncoding="utf-8"

  1. <Connector port="8080" protocol="HTTP/1.1"  
  2.               connectionTimeout="20000"  
  3.               redirectPort="8443"   
  4.               URIEncoding="utf-8"/>

位置 tomcat->conf->web.xml     放开注释的过滤器

  1. <filter>  
  2.         <filter-name>setCharacterEncodingFilter</filter-name>  
  3.         <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>  
  4.         <init-param>  
  5.             <param-name>encoding</param-name>  
  6.             <param-value>UTF-8</param-value>  
  7.         </init-param>  
  8.         <async-supported>true</async-supported>  
  9.     </filter>  


web.xml 配置 过滤器filter

  1. <filter>  
  2.     <filter-name>encodingFilter</filter-name>  
  3.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  4.     <init-param>  
  5.       <param-name>encoding</param-name>  
  6.       <param-value>UTF-8</param-value>  
  7.     </init-param>  
  8.   </filter>  
  9.   <filter-mapping>  
  10.     <filter-name>encodingFilter</filter-name>  
  11.     <url-pattern>/*</url-pattern>  
  12.   </filter-mapping>  


    3、再来查看是否是数据库本身的问题,手动插入一句有中文内容的语句,看数据库中是否有乱码。如果有
解决方案:修改数据库的编码方式为utf-8,还有表的编码方式是否也为utf-8。
    4、以上都没有问题, 很可能hibernate的问题
hibernate连接mysql,在hibernate.cfg.xml加上.:
<property name="connection.useUnicode">true</property> 
<property name="connection.characterEncoding">UTF-8</property> 

        如果用spring配置文件:
        有两种方法
1、直接写到applicationContext.xml中(加上 useUnicode=true&amp;characterEncoding=utf8):
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >  
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
        <property name="url" value="jdbc:mysql://localhost/tevaluation?useUnicode=true&characterEncoding=utf8"></property>  
        <property name="username" value="root"></property>  
        <property name="password" value="123456"></property> 

2、写到database.properties中,由applicationContext.xml调用
database.properties文件中如下(加上useUnicode=true&characterEncoding=utf8):
mysql.driverclass=com.mysql.jdbc.Driver
mysql.jdbcurl=jdbc:mysql://localhost:3306/tevaluation?autoReconnect=true&useUnicode=true&characterEncoding=utf8
mysql.user=root
mysql.password=123456
applicationContext.xml文件中配置如下:
<bean id="config"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:database.properties</value>
			</list>
		</property>
	</bean>
	<!-- 获取数据源 --> <!-- 创建数据源   commons-dbcp.jar;     commons-pool.jar包-->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName">
			<value>${mysql.driverclass}</value>
		</property>
		<property name="url">
			<value>${mysql.jdbcurl}</value>
		</property>
		<property name="username">
			<value>${mysql.user}</value>
		</property>
		<property name="password">
			<value>${mysql.password}</value>
		</property>
	</bean>	  



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值