eclipse往mysql里面插入数据时的乱码&传值乱码


其实解决这个问题就是要保证整个数据插入过程中字符编码要一致。要有三个方面注意的,

第一个是msyl数据库,就是保证mysql的数据库以及表都要保证编码是一致的比如都是UTF-8,

第二个是,eclipse这边也要保证项目,工作空间和java文件的编码格式也是UTF-8,

第三个是,就是配置文件里面jdbc的url的(jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8)后面也要设置编码characterEncoding=utf8(这个问题以前没遇到,这次出现乱码最后才发现是他的缘故) 

第四个是,jsp页面传值过程中可能乱码,<%request.setCharacterEncoding("UTF-8"); %>,防止页面传值的时候乱码————————————————————————————————————————————------

1、针对Post方式提交的请求如果出现乱码,可以每次在request解析数据时设置编码格式:

request.setCharacterEncoding("utf-8");

也可以使用编码过滤器来解决,最常用的方法是使用spring提供的编码过滤器:

在Web.xml中增加如下配置(要注意的是它的位置一定要是第一个执行的过滤器):

<filter>
<filter-name>charsetFilter</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>

该过滤器要做的其实就是强制为所有请求和响应设置编码格式:

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

2、针对Get方式的乱码问题,由于参数是通过URL传递的,所以上面通过request设置的编码格式是不起作用的,此时可以在每次发生请求之前对URL进行编码:例如:Location.href="/encodeURI"("http://localhost/test/s?name=中文&sex=女");

当然也有更简便的方法,那就是在服务器端配置URL编码格式:

修改tomcat的配置文件server.xml:
             <Connector URIEncoding="UTF-8" 
                 port="8080"   maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               connectionTimeout="20000" disableUploadTimeout="true" />

只需增加 URIEncoding="UTF-8"  这一句,然后重启tomcat即可。 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM