5 Http请求中文乱码处理
java 乱码分很多种,这里主要研究解决http请求中出现乱码的情况。
http请求出现中文乱码的主要原因:发送方与接收方编码不一致,服务器默认支持的编码与web应用不一致,如:tomcat 是国外程序员开发的,页面默认编码为ISO-8859-1,而我们很多中文浏览器默认的编码为:UTF-8,如果不作处理,从浏览器发送中文数据发送给web应用就会出现乱码。
http请求出现中文乱码的主要情况:
1 页面带中文的标签都显示乱码
2 表单提交(form):post与get
3 超链接:<a href=”http://cnblogs.com?name=流氓”>
4 SendRedirect() 发生乱码
5 getRequestDispatcher("url").forward(request, response)
1 页面带中文的标签都显示乱码

Servlet 后台传递中文信息时,没有设置编码格式
response.setContentType("text/html;");
PrintWriter out = response.getWriter();
out.println("<form action='/MessyCode/FormRecevie' method='post' >");
out.println("用户名:<input type='text' name='username' > <br/>");
out.println("<input type='submit' value='提交' > <br/>");
out.println("</form>");
在第1行设置一下reponse对象的编码格式可解决该问题,修改代码如下:
response.setContentType("text/html;charset=utf-8");
2 表单提交(form):post与get
① post 提交之后,接受页面出现乱码

发送页面
response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter();
out.println("<form action='/MessyCode/FormRecevie' method='post' >");
out.println("用户名:<input type='text' name='username' > <br/>");
out.println("<input type='submit' value='提交' > <br/>");
out.println("</form>");
接收页面
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
out.println(username);
解决方案:在获取传递的参数前,要设置request与response 对象的编码格式
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
② get 提交之后出现乱码
get 方式提交的数据依然是浏览器用什么码表打开就用什么码表发送。不同的是,以get方式提交数据时,request设置编码无效。即使设置了UTF-8还是会去查ISO8859-1。得到乱码,要解决这个问题,需要拿着乱码反向查ISO8859-1,拿到数据后,再去查正确码表。
String username = new String((request.getParameter("username")).getBytes("iso8859-1"),"utf-8");
3 超链接
① 接收页面给request 与 response 对象设置编码
response.setContentType("text/html;utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
System.out.println(name);
out.println(name+"</br>");
② 发送页面有两种情况,一种是html 与jsp 页面超链接,一种是Servlet的超链接
html 与jsp 页面超链接必须在页面设置编码格式为:UTF-8,否则接收页面不管怎么处理都会出现乱码
jsp 页面设置:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
html 页面设置:
<meta http-equiv="content-type" content="text/html;charset=utf-8">
Servlet超链接在发送页面设置response对象编码:
response.setContentType("text/html;charset=utf-8");
4 SendRedirect()方法
发送页面对发送的中文进行编码
//包含中文信息的参数进行编码
String username = URLEncoder.encode("流氓3","UTF-8");
response.sendRedirect("/MessyCode/RedirectReceive?username="+username);
接收页面需要设置reponse的编码格式,然后直接调用即可
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
5 getRequestDispatcher("url?parameter="+"参数").forward(request, response)
发送页面需要对response 与request 对象都进行编码设置
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//包含中文信息的参数进行编码
String username = "流氓3";
request.getRequestDispatcher("/DispatcherReceive?username="+username).forward(request, response);
接收页面直接访问即可,无需处理
String username = request.getParameter("username");
5 Http请求中文乱码处理的更多相关文章
- 尚硅谷面试第一季-09SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理呢
目录结构: 关键代码: web.xml <filter> <filter-name>CharacterEncodingFilter</filter-name> &l ...
- Spring-解决请求中文乱码问题
解决spring请求中文乱码问题 1.web.xml添加编码拦截器 <filter> <filter-name>CharacterEncoding</filter-nam ...
- 使用httpclient post请求中文乱码解决办法
使用httpclient post请求中文乱码解决办法 在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码 ...
- get请求与post请求中文乱码问题的解决办法
首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...
- 解决Post请求中文乱码问题
解决Post请求中文乱码问题 req.setChracterEncoding()要在获取请求参数前调用才有效,不然还是乱码
- get请求中文乱码及get,post编码探究
在我使用get请求进行查询的时候遇到一个问题: 当我的请求参数中有中文时,出现乱码. 可是即使我设置了Spring的characterEncodingFilter,也还是出现乱码. 原因:tomcat ...
- android客户端向服务器发送请求中文乱码的问
android客户端向服务器发送请求的时候,并将参数保存到数据库时遇到了中文乱码的问题: 解决方法: url = "http://xxxx.com/Orders/saveorder.html ...
- SpringMVC如何解决POST请求中文乱码问题,GET的又如何处理呢?
在web.xml中 <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-c ...
- Java中关于Servlet中请求中文乱码及文件下载
1,Servlet请求响应中文乱码问题 package com.demo.servlet; import java.io.PrintWriter; import java.io.IOException ...
随机推荐
- 【Teradata】磁盘碎片整理(ferret工具)
DEFRAGMENTcombines free sectors and moves them to the end of a cylinder.PACKDISKfill (or packs) cyli ...
- Apache Curator is a Java/JVM client library for Apache ZooKeeper
http://curator.apache.org/index.html Welcome to Apache Curator What is Curator? Curator n ˈkyoor͝ˌāt ...
- JSP内置九个对象Request请求对象
jsp内置对象是什么呢? 例如Java语言使用一个对象之前需要实例化(也就是所说的new一个对象),创建对象这个过程有点麻烦,所以在jsp中提供了一些内置对象,用来实现很多jsp应用.在使用内置对象时 ...
- LDAP概念和原理
LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...
- 关于 chrome canary X64 在 win7 64bit 下面缺少openvr_api.dll的解决方法
在github上下载openvr_api.dll放到chrome的安装目录下就可以. 其实放到系统目录下最好,以后其他程序要使用的时候也能使用的到. https://github.com/ValveS ...
- 浅谈SQL注入
先看一个sql语句: select * from admin where username='(此处为用户输入的数据)'; 在没有任何过滤的情况下,如果用户输入:' or 1=1 -- 这条语句就为: ...
- NLTK 第一篇:介绍
NLTK(Natural Language Toolkit)是一个功能强大的自然语言处理工具,它提供了一组自然语言算法,例如切分词(Tokenize),词性标注(Part-Of-Speech Tagg ...
- Angular刷新浏览器 404 问题
最近在用angular写一个后台的项目,遇到一个小问题. 进入某个路由页面之后,手动触发浏览器的刷新,然后就404了... 翻看Angular的文档,发现Google早已经给我们想到了这个问题的处理方 ...
- 企业IT架构转型之道,阿里巴巴中台战略思想与架构实战
前言: 晚上11点多闲来无事,打开QQ技术群,发现有关 '中心化与引擎化' 的话题,本着学习的心态向大佬咨询,大佬推荐一本书,我大概看了有四分之一的样子,对于我这种对架构迷茫的人来说,如鱼得水,于是特 ...
- 基于 HTML5 的工业互联网 3D 可视化应用
工业企业中生产线处于高速运转,由工业设备所产生.采集和处理的数据量远大于企业中计算机和人工产生的数据,生产线的高速运转则对数据的实时性要求也更高.破解这些大数据就是企业在新一轮制造革命中赢得竞争力的钥 ...