Get,Post请求中文乱码问题有效解决方法
2015-10-16 18:12
896 查看
对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考http://www.cnblogs.com/jym-sunshine/p/4885993.html本文主要介绍如何有效解决web请求中的乱码问题,其实解决方法有很多种,不同的请求类型解决方法也不相同。本文只介绍最方便的一种: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即可。相信通过这两段配置,你再也不用担心遇到乱码啦,当然数据库还有可能出现乱码,那将是另一篇文章的事啦!
相关文章推荐
- SQLPLUS登录oracle方式
- Android Rect和RectF的区别
- Xcode themes
- cublasSgemm实现矩阵的相乘
- 使用bootstrap-table插件
- WINDOWS下更改MYSQL数据路径(datadir)后服务启动1067解决不能改变mysql数据库存储位置
- JQuery如何监听DIV内容变化
- VS通过文件路径名查找到当前文件夹和当前文件名
- java中静态代码块的用法 static用法详解
- Teradata Studio中文乱码解决方法
- JAVA设计模式(7) —<结构型>装饰模式(Decorator)
- for(object obj :args)
- Eventbus 详解,Activity和fragment通讯,相互发送接收数据
- elasicsearch suggest用法
- Linux下Date命令的用法
- Android 启动模式中巧用singleTask
- 物联网通讯协议介绍
- n皇后问题
- ios8 桌面图标圆角数字显示未读消息个数
- "library not found for - "解决办法