Tomcat 处理请求时的中文乱码问题
利用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 处理请求时的中文乱码问题的更多相关文章
- Servlet处理get请求时的中文乱码问题
我们都知道,使用Servlet处理get请求时,如果get请求的参数中有中文,直接接收会是乱码,这个时候我们使用类似下面的语句来处理乱码: 12345 String name = request.ge ...
- action接收到来自jsp页面的请求时出现中文乱码问题处理方法
写JSP程序时,在Servlet中取请求参数时出现了乱码,当然,这种乱码问题再简单不过了.由于在JSP中使用了GBK作用页面的编码,那么提交的中文信息自然也会被按着GBK进行编码,为%xx格式的GBK ...
- mock请求时出现中文乱码的解决
请求返回的乱码如图: 原mock代码如下 [ { "description":"这是我们的第一个mock例子", "request":{ & ...
- [MacOS] 终端使用ssh时,中文乱码问题处理
终端显示中文问题处理: vim ~/.inputrc 加入以下代码 set meta-flag on set convert-meta off set input-meta on set output ...
- get方式请求会出现中文乱码。post方式不会。
get方式请求会出现中文乱码.post方式不会. 如果是要解决get方式中文乱码问题,就需要做一个拦截器,或者在web.xml做一个get请求的配置 来自为知笔记(Wiz)
- 解决在Linux下安装Oracle时的中文乱码问题
本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 解决在Linux下安装Oracle时的中文乱码问题 操作系统:Red Hat Enterprise Linux 6.1数据库:O ...
- 如何解决http请求返回结果中文乱码
如何解决http请求返回结果中文乱码 1.问题描述 http请求中,请求的结果集中包含中文,最终以乱码展示. 2.问题的本质 乱码的本质是服务端返回的字符集编码与客户端的编码方式不一致. 场景的如服务 ...
- (转)MySQL 插入数据时,中文乱码问题的解决
MySQL 插入数据时,中文乱码问题的解决 原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...
- IDEA使用maven构建时控制台中文乱码的解决办法
使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...
随机推荐
- 【wikioi】1108 方块游戏(模拟)
http://wikioi.com/problem/1108/ 这题有点变态,因为他根本没有策略! 还是说这题不是实时的?反正这题很变态,是在一个时间段同时消除所有的行列斜边,同一时间!!!!!! 所 ...
- COJ978 WZJ的数据结构(负二十二)
试题描述 输入两个正整数N.K,以及N个整数Ai,求第K小数. 输入 第一行为两个正整数N.K.第二行为N个正整数Ai. 输出 输出第K小数. 输入示例 5 41 2 3 3 5 输出示例 3 其他说 ...
- 用C语言实现素数筛法获取一亿(100000000)以内的全部素数
具体筛法是:先把n个自然数按次序排列起来.1不是质数,也不是合数,要划去.第二个数2是质数留下来,而把2后面所有能被2整除的数都划去.2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数 ...
- 使用Objective-C的文档生成工具:appledoc
使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...
- [ZT] Vim快捷键分类
一. 移动: h,j,k,l: 左,下,上,右. w: 下一个词的词首. e:下一个词的词尾. b:上一个词的词首. <>: v 模式选中后进行缩进.二. 跳 ...
- for循环计算游戏通关分数
一个游戏1到20关是成绩是自身关卡数的成绩,21-30每关10分,31-40每关20分,41-49每关30分,50关100分.输入一个关数求成绩 代码如下: <!DOCTYPE html PUB ...
- Leetcode | Minimum/Maximum Depth of Binary Tree
Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum depth is the n ...
- Excel 中单元格和范围的引用(即访问的表示方法)
计算机中,无非是数据和数据的处理这两件事.Excel的工作表能存储大量数据,除了这些原始数据,我们还要用函数来处理这些数据,比如求和求积,求平均值,排序等等,并把处理结果也存在单元格里.在Excel中 ...
- Apache Spark源码走读之19 -- standalone cluster模式下资源的申请与释放
欢迎转载,转载请注明出处,徽沪一郎. 概要 本文主要讲述在standalone cluster部署模式下,Spark Application在整个运行期间,资源(主要是cpu core和内存)的申请与 ...
- Swing 刷新容器
JPanel pchks = new JPanel();// 容器刷新(重新layout所有空间)pchks.validate();// 容器重绘(当容器内的东西由多变少时,防止多出来的部分没有清楚) ...