参考:

http://blog.csdn.net/error_case/article/details/8250209

中文乱码是个老生常谈的问题,一般情况下,只要保证页面,web服务器,数据库的编码一致,很少出现中文乱码,不过最近项目中碰到了一个以前没在意过的问题,就是post提交和get提交的中文乱码处理方式不一样的问题,具体情况是这样的:为了方便,我将tomcat服务器的编码方式设置为utf-8,设置方法如下:

在tomcat的server.xml的
<Connector port="8080" protocol="HTTP/1.1"?
connectionTimeout="20000"?
redirectPort="8443"/>
节点中,加上useBodyEncodingForURI="true"这个属性,这属性的默认值 是false,另外也可以在那个节点中加上URIEncoding="UTF-8"属性。

设置后,重启tomcat,发现get方式提交的数据没中文乱码,但post提交的数据依旧存在中文乱码,通过在网上搜索一看,这样的设置只能处理get请求方式的中文乱码,不能处理post请求方式的,原因应该是get方式是将参数拼接在url中的,而post方式是将参数写在http协议的body中的;post还乱码,我在java代码中转码看了下,转码后正常,转码代码:

String a = new String(request.getParameter("a").getBytes("ISO8859_1"),"UTF-8");

从这可以看出来,tomcat服务器还是以默认编码方式提交了请求,为了改变请求提交编码方式,就需要设置request.setCharacterEncoding("UTF-8");,设置后测试,没中文乱码了,不过如果在开发中每个jsp页面这样写的话,也不太和谐,为了方便,可以制作一个filter,在处理请求前,对所有的request都设置它的编码为需要的编码方式,这样就不用在每次处理的时候来设置编码了。

-----------------------------------

hl add 20140107 很多框架都提供了类似的filter ,比如spirngmvc

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

---------------------

hl add 20140108 ajax, json通过post方式走filter没问题,但是如果通过get方式会出现乱码

解决方案:jsp页面拼装的时候通过encodeURI转码,java接收的时候也通过URLDecoder.decode转码

js:

var age = encodeURI($(“age”).attr(“value));

var userName = encodeURI($(“userName”).attr(“value));

var user = {userName: userName, age: age};

$.ajax({

 url:’’;

type: “get”,

data: user

})

 

java:

String userName = URIDecoder.decode(user.userName);

-----------------------------------------------------------------------------------------

 

测试结果:

增加URIEncoding="UTF-8"属性不行,修改成URIEncoding="GBK"就可以了,不知何故。

Tomcat JSP提交参数中文乱码问题解决的更多相关文章

  1. 解决get方法提交参数中文乱码问题:

    解决get方法提交参数中文乱码问题: 1找到你们的tomcat的目录 2在这个目录下面\tomcat61-32\tomcat61\conf 3找到server.xml ,用notepad打开(没有就下 ...

  2. soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  3. soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  4. HttpClient多文件上传代码及普通参数中文乱码问题解决

    该随笔记录了在实际项目中使用HttpClient调用外部api,需上传文件和普通参数的代码. 笔者在使用 HttpClient 调用 http api 接口时,需要服务端上传文件和一些普通参数给 ht ...

  5. jsp页面间传递参数 中文乱码问题(zz)

      jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...

  6. Jsp页面中的中文乱码问题解决

    Jsp页面中的中文乱码问题解决 在编写Jsp页面的时候,发现写入其中的中文在浏览器浏览的时候会出现乱码的情况. 出现乱码的原因分析: 因为页面中对自己的编码格式的声明和页面的实际编码格式不相同,而浏览 ...

  7. tomcat启动控制台中文乱码问题解决方法

    tomcat启动控制台中文乱码问题解决方法,修改tomcat安装路径/conf/logging.properties文件 java.util.logging.ConsoleHandler.encodi ...

  8. 转:jsp页面显示中文乱码解决方案

    jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util.*&quo ...

  9. JSP页面的中文乱码

    jsp页面显示中文乱码:    jsp页面的编码方式有两个地方需要设置:   <%@ page language="java" import="java.util. ...

随机推荐

  1. iOS - JSON 数据解析

     iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

  2. [CareerCup] 18.13 Largest Rectangle of Letters

    18.13 Given a list of millions of words, design an algorithm to create the largest possible rectangl ...

  3. Linux_文件及文件夹[创建][复制][移动][删除][重命名]

    一.文件/文件夹创建 1.文件的创建 touch , vi/vim/nano , ... 语   法: touch [-acfm][-d <日期时间>][-r <参考文件或目 录&g ...

  4. [转载]窗口之间的主从关系与Z-Order

    窗口之间的主从关系与Z-Order 原文地址:http://www.cnblogs.com/dhatbj/p/3288152.html说明:这是本人2008年写的一篇旧文,从未公开发表过.其中除了一小 ...

  5. hibernate 中如何用注解映射定长字符类型char(2)

    如果是用xml的方式配置映射,可以在<column>标签的sql-type属性中设置char(2),比如: <property name="age" type=& ...

  6. rename 快速移动文件或者文件夹

    有几种情况: 1.对于文件,rename可以在不同盘符之间移动. 2.对于空文件夹,rename也可以在不同盘符之间移动.但是目标文件夹的父目录必须存在. 3.对于非空文件夹,只能在同一盘符下移动. ...

  7. el 表达式 和 ognl表达式

    el (expression language) el 基础操作符 el 能够隐含对象(就是可以直接访问的) el 的两种使用方式,第二种好像在jsp中没有什么用,主要用于jsf el能够访问的对象( ...

  8. mysql导出导入

    1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql 2.导出一个表 ...

  9. iostat监控磁盘io

    1.安装#yum install sysstat 2.启动#/etc/init.d/sysstat start 3.自启动#checkfig sysstat 4.基本使用#iostat -k 2每两秒 ...

  10. kuohao

    #include <stdio.h> int b[50]; int a[50]; int w[50]; int main() { freopen("in.txt",&q ...