遇到get请求中文编码的时候,有的人会采用在Tomcat/conf/server.xml中的如下添加一句:

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

即:URIEncoding="utf-8"

但是这种方法不可采取!!!

为什么那?原因是:我们写的代码客户用的时候,不一定用Tomcat服务器,可能用webLogic等服务器,所以不可能让客户修改服务器,这是不可取的方法,牢记!!!

一般采用如下的方法:

String name=response.getParameter("username");

//因为服务器是iso编码格式的,所以我们反编译回来

byte[] bytes=name.getBytes("ISO-8859-1");

name=new String(bytes,"utf-8");

完整例子如下:

(1)form.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'form.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
</br>
<form action="OneServlet" method="post">
姓名:<input type="text" name="username" value="张三"/></br>
<input type="submit" name="提交"/><br/>
</form>
<a href="OneServlet?username=李四">点击</a>
</body>
</html>

(2)OneServlet如下:

package com.shujia;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OneServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("username");
byte[] bytes=name.getBytes("iso-8859-1");
name=new String(bytes,"utf-8");
System.out.println("get name:"+name );
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//首先request.setCharacterEncoding("utf-8");防止中文乱码必须要在获取值之前添加
request.setCharacterEncoding("utf-8");
String name=request.getParameter("username");
System.out.println("name:"+name);
}

}

补充一点: URL编码:我们需要把超链接中的所有中文编码,防止信息泄露,被别人利用

String name="张三";

String s=URLEncoder.encode(name,"utf-8");//URL编码

String s=URLDecoder.decode(name,"utf-8");//URL解码

Get请求编码的更多相关文章

  1. 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码

     响应编码 产生原因以及解决办法: 示例: package cn.yzu; import java.io.IOException; import javax.servlet.ServletExcept ...

  2. servlet请求编码与响应编码问题(编码不一致可能会导致乱码)

    html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...

  3. 处理全站请求编码,无论是GET还是POST,默认是UTF-8

    1.java类: import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;imp ...

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

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

  5. java 使用GET请求编码问题解决

    java GET请求解决编码的有效代码前端: encodeURI(encodeURI("你好") 后端代码: String name = request.getParameter( ...

  6. GET&&POST请求编码过程

    编码.解码 我们在开发过程中不可避免的一个话题就是编码和解码,那么什么是编码什么是解码呢?为什么要进行编码和解码呢?下面我们一一分析! 编码和解码的概念 编码是信息从一种形式或格式转换为另一种形式的过 ...

  7. JavaWeb之动态代理解决request请求编码问题

    动态代理解决编码问题 1.设计模式 出现原因:软件开发过程中,遇到相似问题,将问题的解决方法抽取模型(套路) 常见设计模式:单例,工厂,适配器,装饰者,动态代理. 2.装饰者模式简单介绍 谷歌汽车开发 ...

  8. javaweb笔记5之请求编码问题

    post提交: 设置实体内容的编码:request.setCharacterEncoding("utf-8"); 注意:一定要在获取所有参数之前设置,否则设置无效! get方式提交 ...

  9. 动态代理实现设置tomcat请求编码

    1)htmlcode: <html> <head> <title>$Title$</title> </head> <body> ...

随机推荐

  1. 二叉树JAVA实现

    为了克服对树结构编程的畏惧感和神秘感,下定决心将二叉树的大部分操作实现一遍,并希望能够掌握二叉树编程的一些常用技术和技巧.关于编程实现中的心得和总结,敬请期待!~ [1]  数据结构和表示: 二叉树的 ...

  2. vm虚拟机启动失败 Global\vmx86

    workstation12 PRO 启动虚拟机异常报错:无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件 解决方法,启动windows系统服务:

  3. maven私有库配置

    私有库的配置 协同开发过程中私有库可以为团队提升很大效率,之前我的私有库一直存在问题导致jar包导入异常.现在在这分享一下私有库配置的几个点,可能因为我们学校比较简陋所以配置的比较简单,欢迎大家补充 ...

  4. Unity的旋转-四元数,欧拉角用法简介

    当初弄不明白旋转..居然找不到资料四元数应该用轴角相乘...后来自己摸明白了 通过两种旋转的配合,可以告别世界空间和本地空间矩阵转换了,大大提升效率. 每个轴相乘即可,可以任意轴,无限乘.无万向节锁问 ...

  5. Unity3D中Console控制台的扩展

    Assert Store上有一个Editor Console Pro,功能非常全面,百度也能搜到破解.如果有需要建议使用,不要再造车轮 起初因为自带Console功能太弱,有不少可以提升空间.于是尝试 ...

  6. 关于NSLog

    #ifdef __OBJC__#ifdef DEBUG#define NSLog(fmt,...) NSlog((@"%s [Line %d]" fmt),__PRETTY_FUN ...

  7. python 学习笔记十一 SQLALchemy ORM(进阶篇)

    SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据A ...

  8. mys.cnf-性能优化

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = socket = /data//mysql.sock [mysql] no-auto-rehash [mys ...

  9. Linux 执行ll命令时指定按文件时间或大小排序

    按时间排序: $ ll -ht 按大小排序: $ ll -hS 使用--help查看命令的用法,如 $ ll --help

  10. CSS基础介绍

    CSS介绍 CSS是指层叠样式表,CSS样式表极大的提高了工作效率 CSS基础语法 1. 首先选择一个属性 2. 选择了属性以后,用大括号括起来 3. 括号里面是对应的属性和属性值,如: select ...