get请求乱码情况
编写一个RegistServlet处理用户的Get请求数据
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
// 处理响应数据的格式和编码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 获取字符输出流对象
PrintWriter out = response.getWriter();
// 获取请求参数
String name = request.getParameter("uname");
String address = request.getParameter("address");
// 输出数据
out.println("name="+name);
out.println("<br/>");
out.println("address="+address);
}
运行结果发现输入中文提交后显示结果为乱码:

jsp页面中 <meta http-equiv="content-type" content="text/html; charset=UTF-8">通知浏览器以utf-8解码
get请求编码方式和post请求提交编码方式不同,get是把数据直接放到url中,例如以上的uname,IE浏览器先对中文进行utf-8编码(一个中文3个字符表示 太长),继而为了缩短字符又用ISO8859-1编码后传递给服务器。服务器的doGet方法中要先进行ISO8859-1解码再utf-8解码才能看到中文。
而post请求则在浏览器端把数据以utf-8的形式存储到http的请求体中,不用通过url传输,继而只要 request.setCharacterEncoding("utf-8");通知request以utf-8形式解码就行,因为request默认以ISO8859-1进行解码的。
使用代码解决乱码问题
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
// 处理响应数据的格式和编码,通知浏览器数据的显示方式
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 获取字符输出流对象
PrintWriter out = response.getWriter();
// 获取请求参数
String name = request.getParameter("uname");
String address = request.getParameter("address");
// 获取ISO8859-1的原始数据
11 byte [] bs = name.getBytes("ISO8859-1"); //内部编码字节流,其实中文字符经过utf-8编码后的字节 都是英文可以表示的,只是 //ISO8859-1显示数据以一个字节一个字节显示,而utf-8以几个字节一起表示
12 name = new String(bs,"UTF-8");
13 bs = address.getBytes("ISO8859-1");
14 address = new String(bs,"UTF-8");
// 输出数据
out.println("name="+name);
out.println("<br/>");
out.println("address="+address);
}
如果使用以上的代码解决GET乱码每一个请求参数都需要重新的解码太繁琐,因此可以直接使用服务器通知浏览器以指定的方式进行编码字符数据。
使用URIEnoding方式解决GET乱码问题
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>
URIEncoding主要指定的是%E5%8D%A1%E5%8D%A1的数据的解码方式,如果没有指定那么默认是ISO8859-1,如果指定那么采用指定的码表进行解码。因此服务器端就没有必要使用两个中编码方式进行转码了。
注意:在实际的生产环境中我们代码的乱码问题不可能以来服务器帮助我们解决,因此推荐使用第一个转码方式。后期可以直接实现一个乱码的过滤器实现处理乱码的问题。
http://localhost:8080/day07/regist?uname=焦宁波 在地址栏中输入需要的中文数据【乱码】
<a href="/day07/regist?uname=人人">单击我传递中文数据</a> 【乱码】
以上两个代码出现乱码状况一致:地址栏中直接原样出现了中文。
因此对于以上的参数在传递的过程中必须进行基本的中文编码处理。
URLEncoder.encode(需要编码的字符, 需要编码码表)
那么在服务器端使用GET乱码的解决方案即可。
http://blog.sina.com.cn/s/blog_673c81990100t1lc.html
get请求乱码情况的更多相关文章
- 处理get中的中文乱码情况
1 最基本的乱码问题.这个乱码问题是最简单的乱码问题.一般新会出现.就是页面编码不一致导致的乱码.<%@ page language="java" pageEncoding= ...
- 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...
- Java Web乱码分析及解决方式(一)——GET请求乱码
引言: 在进行Web開始时.乱码是我们最常常遇到也是最主要的问题.有经验的程序员非常easy能解决,刚開始学习的人则easy被泥潭困住. 并且非常多时候.我们即使攻克了乱码问题也是不明就里.往 ...
- springmvc框架开发中解决产生的乱码情况
一:解决post请求方式产生的乱码情况 示例代码如下: <!-- 解决post乱码 --> <filter> <filter-name>CharacterEncod ...
- JavaWeb get请求乱码处理
乱码终极解决方案 Author:Marydon 一.安装好eclipse/myeclipse后,先将开发环境改成UTF-8; 更改工作空间编码方式 window-->preferences- ...
- Java Web乱码分析及解决方式(二)——POST请求乱码
引言 GET请求的本质表现是将请求參数放在URL地址栏中.form表单的Method为GET的情况.參数会被浏览器默认编码,所以乱码处理方案是一样的. 对于POST请求乱码.解决起来要比GET简单.我 ...
- form表单编码方式设置为multipart/form-data,后台参数出现乱码情况
一般在上传图片过程中,form中的编码方式一般采用multipart/form-data方式编码,但是后台这取参数时,可能会出现乱码情况:这里后台要采用转换编码方式: 页面: 后台:获取表单元素时,
- SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等
1.SpringMVC基本概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 ...
- javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路 先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符 -- ...
随机推荐
- JobDataMap 不能被序列化如何解决研究中
JobDataMap被用来保存一系列的(序列化的)对象,这些对象在Job执行时可以得到.JobDataMap是Java Map接口的一个实现,而且还增加了一些存储和读取主类型数据的便捷方法. 如果使用 ...
- JAVA压缩解压ZIP文件,中文乱码还需要ANT.JAR包
package zip; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStrea ...
- ubuntu MySQL安装和设置
1. apt-get install mysql-server 2. apt-get isntall mysql-client 修改 /etc/mysql/my.cnf #bind-address ...
- [PHP] ubuntu16.04配置Lamp环境(搭建linux+apache+mysql+php7环境)
reference : http://blog.csdn.net/Abyss_sliver/article/details/77621404 好久没有在Linux环境下进行开发了,比较常用的还是win ...
- java读取文件并获得文件编码,转换为指定编码的工具类代码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- hdu 4548 美素数 超级大水题
美素数 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submis ...
- Android中远程Service浅析
上一篇文章中简单的写了一下关于Android中Service的两种启动方式,不过都是本地的服务,今天就简单的写下关于Android中远程Service的使用,学习之前先了解两个概念,AIDL( And ...
- jQuery调用WCF需要注意的一些问题
昨天,博客园首页增加了Digg功能.在该功能中我们开始尝试使用jQuery直接调用WCF.之前我们采用的方案是jQuery调用Web Service,然后WebService再调用服务层.这样调用主要 ...
- IE6的3像素神奇bug:缘起与解决方案
在我们这样一个神奇的国度,到了2014年了,居然还是有很多人的电脑上用着XP,安装的是IE6,他们没有想过要升级,我们就得想着兼容他们.... 一. 6爷我喝高了,最后一行有重影.那什么是IE6 的3 ...
- scala 学习笔记十 元组
1.元组初始化 2.元组作为函数返回值 3.元组拆包 上面168行 ,单个val后面跟着一个由五个标识符构成的元组,表示对ff返回的元组进行拆包 上面174行,将整个元组捕获到单个val或var中,那 ...