编写一个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请求乱码情况的更多相关文章

  1. 处理get中的中文乱码情况

    1 最基本的乱码问题.这个乱码问题是最简单的乱码问题.一般新会出现.就是页面编码不一致导致的乱码.<%@ page language="java" pageEncoding= ...

  2. 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)

    使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...

  3. Java Web乱码分析及解决方式(一)——GET请求乱码

    引言:     在进行Web開始时.乱码是我们最常常遇到也是最主要的问题.有经验的程序员非常easy能解决,刚開始学习的人则easy被泥潭困住. 并且非常多时候.我们即使攻克了乱码问题也是不明就里.往 ...

  4. springmvc框架开发中解决产生的乱码情况

    一:解决post请求方式产生的乱码情况 示例代码如下: <!-- 解决post乱码 --> <filter> <filter-name>CharacterEncod ...

  5. JavaWeb get请求乱码处理

      乱码终极解决方案 Author:Marydon 一.安装好eclipse/myeclipse后,先将开发环境改成UTF-8; 更改工作空间编码方式 window-->preferences- ...

  6. Java Web乱码分析及解决方式(二)——POST请求乱码

    引言 GET请求的本质表现是将请求參数放在URL地址栏中.form表单的Method为GET的情况.參数会被浏览器默认编码,所以乱码处理方案是一样的. 对于POST请求乱码.解决起来要比GET简单.我 ...

  7. form表单编码方式设置为multipart/form-data,后台参数出现乱码情况

    一般在上传图片过程中,form中的编码方式一般采用multipart/form-data方式编码,但是后台这取参数时,可能会出现乱码情况:这里后台要采用转换编码方式: 页面: 后台:获取表单元素时,

  8. SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等

    1.SpringMVC基本概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 ...

  9. javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码

     乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路   先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符  -- ...

随机推荐

  1. git 经常使用操作集锦

    创建仓库 新建普通仓库: jxdong@ubuntu-server:~/workspace/git$ git init Reinitialized existing Git repository in ...

  2. Java操作Mongodb 保存/读取java对象到/从mongodb

    从http://central.maven.org/maven2/org/mongodb/mongo-java-driver/选择一个版本进行下载,这里选择的是3.0.0版本,具体下载以下jar包: ...

  3. 混沌数学之Duffing(杜芬)振子

    杜芬振子 Duffing oscillator是一个描写强迫振动的振动子,由非线性微分方程表示 杜芬方程列式如下: 其中 γ控制阻尼度 α控制韧度 β控制动力的非线性度 δ驱动力的振幅 ω驱动力的圆频 ...

  4. 第二章 JVM内存分配

    注意:本篇博客,主要参考自以下四本书 <分布式Java应用:基础与实践> <深入理解Java虚拟机(第二版)> <突破程序员基本功的16课> <实战java虚 ...

  5. Word Break II leetcode java

    题目: Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where e ...

  6. Javascript 操作 Sql中的Xml 字段

    在一个项目当中,我们需要把数据库中的Xml字段中的信息表现在页面中,如果用Sql进行操作,读取.这样的话,必然导致太复杂,于是我想到了,如果把Xml字段先读出来,然后用Js去操作,这样岂不是简单了许多 ...

  7. IOS info.plist配置文件

    创建ios程序时,系统会自动生成一个info.plist文件,它是一个必不可少的文件,因为在这个文件中,存放是应用程序的配置信息,比如本地化语言.版本号.软件名称等,当然,我们也可以在项目的属性中进行 ...

  8. 调整WebLogic的时间

    控制台显示的时区为GMT,于是考虑调整WebLogic的时区,查询WebLogic的相关参数后,初步的调整方式为:修改相关域下的bin目录中的startWebLogic.cmd脚本.添加"- ...

  9. TotalCommander如何比较文件夹并提取出重复的文件

    1 如图所示,我左侧有一万本多小说,右侧有两千五百多本小说,我希望比较这两个文件夹相同的小说并剪切到一个新的文件夹中. 2 我们使用Total Commander对比这两个文件夹 3 随后两个文件夹相 ...

  10. ZH奶酪:PHP图片压缩(TinyPNG在线API)和(使用Imagick扩展)

    1.调用TinyPng网站提供的API 1.1.须知 (1)tinypng的官网:https://tinypng.com/ 不知道国内访问会不会很慢,在Singapore打开这个网站很流畅: (2)A ...