利用Tomcat8作为服务器,采用servlet接收前端请求后进行处理的过程中,前台请求中有中文时,中文信息变成了乱码。

经过调试和查阅,发现Tomcat在处理get请求和post请求是有区别的。参照网上的各种说法,进行一下实验:

jsp页面与后台采用的都是utf-8编码,所以只对utf-8的编码方式进行比较,对比的代码如下:

String name=request.getParameter("username");
String param=new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
System.out.println(name+" "+param);

测试:
1.chrome浏览器  post请求 请求编码未设置  
 前端jsp页面设定为utf-8编码,结果name为乱码  param可以正确解析。网上查到post请求tomcat的默认的编码方式是iso-8859-1所以会出现如上结果

2.ie浏览器   post请求  请求编码未设置
   结果与前完全相同name为乱码 param可以正确解析

3.chrome浏览器 get请求  请求编码未设置
   结果是name可以正确解析,param为乱码  可见上来的请求时utf-8的,和前端页面一致

4.ie浏览器  get请求  请求编码未设置
 结果和之前相同,name可以正确解析,param为乱码

之后又尝试了前端采取gbk方式编码的测试。现在直接说结果吧

结论
  
对于Tomcat服务器post请求是按照iso-8859-1进行编码的,get请求则是按照前端页面的编码方式编码的

那么,我们在实际使用中,保证前后端编码格式一致是很有必要的,可以避免很多麻烦,要么都用gbk,要么都用utf-8

如果一致了,那么get请求就可以直接进行解析,但是post请求还得进行处理。如果采用了如下代码

request.setCharacterEncoding("UTF-8");

那么post请求之后就可以直接获取参数,或者可以直接用

String param=new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");

 这篇文章只是简单的进行了一下实验和分析,肯定还有不足和遗漏的地方,希望大家多多指教

ps 再补充一点,在实验过程中,springmvc中返回为了方便用了@ResponseBody注解,返回中文时也出现了乱码,发现springmvc默认采用的iso-8859-1,所以返回字符串可以用

return new String("你好".getBytes(), "ISO-8859-1");

Tomcat 处理请求时的中文乱码问题的更多相关文章

  1. Servlet处理get请求时的中文乱码问题

    我们都知道,使用Servlet处理get请求时,如果get请求的参数中有中文,直接接收会是乱码,这个时候我们使用类似下面的语句来处理乱码: 12345 String name = request.ge ...

  2. action接收到来自jsp页面的请求时出现中文乱码问题处理方法

    写JSP程序时,在Servlet中取请求参数时出现了乱码,当然,这种乱码问题再简单不过了.由于在JSP中使用了GBK作用页面的编码,那么提交的中文信息自然也会被按着GBK进行编码,为%xx格式的GBK ...

  3. mock请求时出现中文乱码的解决

    请求返回的乱码如图: 原mock代码如下 [ { "description":"这是我们的第一个mock例子", "request":{ & ...

  4. [MacOS] 终端使用ssh时,中文乱码问题处理

    终端显示中文问题处理: vim ~/.inputrc 加入以下代码 set meta-flag on set convert-meta off set input-meta on set output ...

  5. get方式请求会出现中文乱码。post方式不会。

    get方式请求会出现中文乱码.post方式不会.   如果是要解决get方式中文乱码问题,就需要做一个拦截器,或者在web.xml做一个get请求的配置 来自为知笔记(Wiz)

  6. 解决在Linux下安装Oracle时的中文乱码问题

    本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 解决在Linux下安装Oracle时的中文乱码问题 操作系统:Red Hat Enterprise Linux 6.1数据库:O ...

  7. 如何解决http请求返回结果中文乱码

    如何解决http请求返回结果中文乱码 1.问题描述 http请求中,请求的结果集中包含中文,最终以乱码展示. 2.问题的本质 乱码的本质是服务端返回的字符集编码与客户端的编码方式不一致. 场景的如服务 ...

  8. (转)MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决  原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...

  9. IDEA使用maven构建时控制台中文乱码的解决办法

    使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...

随机推荐

  1. 【转】delphi程序只允许运行一个实例的三种方法:

    一.        创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1 Uses Windows,Form, FrmMain in 'FrmMain.pas' ...

  2. JS中Date对象getYear()方法和getFullYear()方法区别

    释义 JavaScript getFullYear() 方法 getFullYear() 方法可返回一个表示年份的 4 位数字. getYear() 语法 dateObject.getFullYear ...

  3. 循环repeater中的每一列,并计算数据和

    <asp:Repeater ID="rpt" runat="server"> <ItemTemplate> <td>< ...

  4. zabbix自定义键值原理

    子配置文件的配置 为了便于维护和分类管理,UserParameter的内容可以单独写一个配置文件 # vim /usr/local/zabbix/etc/zabbix_agentd.conf Incl ...

  5. python基础数据类型

    整形:(不可变类型) >>> a = 123>>> type(a)<class 'int'> 长整形:(在python3中已经废弃了) >> ...

  6. Html - SPA页面收集(有图)

    场景,左图,又字段的布局 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  7. java 找出字符串之间的字符

    package lia.meetlucene; import java.io.IOException; import java.util.ArrayList; import java.util.Arr ...

  8. $_ 与 $PSItem

    PowerShell 3.0 中的$PSItem 此文章于2012年11月4日发表在PowershellPowershell小技巧并加以Powershell 3.0管道的标签 by Mooser Le ...

  9. linux查看时间和修改时间

    查看当前时间,date -R 设置时间 date -s 例如当前时间2014年11月3日17:22:48 date -s 11/3/2014 date -s 17:22:48 先设置日期后设置具体时间 ...

  10. Markdown基本用法

    Markdown基本用法 不同的编辑器对本文中的功能可能显示情况不一样,马克飞象可以完美支持和显示. 一.标题 h1标题 #h1标题 h1标题 h1标题 == h2标题 ##h2标题 h2标题 h2标 ...