Get请求编码

遇到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);
}

}

时间: 2024-10-26 17:51:41

Get请求编码的相关文章

全站请求编码过滤器

1 *自定义的: 2 >代码: 3 public class EncodingFilter implements Filter{ 4 private String charset="utf-8"; 5 public void destroy(){ 6 } 7 public void doFilter(ServletRequest req,ServletResponse resp, 8 FilterChain chain){ 9 HttpServletRequest request

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

 响应编码 产生原因以及解决办法: 示例: 1 package cn.yzu; 2 import java.io.IOException; 3 import javax.servlet.ServletException; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7

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

html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">这里不设置成中文编码无法写中文. jsp中的编码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> conte

JSP页面,响应和请求编码全解

JSP页面编码 Page character encoding指的是JSP文件和Tag文件本身的编码格式. 如果web.xml中<jsp-config>元素中配置了<page-encoding>,页面上page指令的pageEncoding属性必须和web.xml中<jsp-config>元素中的<page-encoding>元素指定的page-encoding一致,否则会导致转换错误.也就是说<page-encoding>配置和pageEnco

request请求编码处理

request用来获取浏览器的请求信息,请求的方式分为get请求和post请求. get请求会把参数显示到地址栏(超链接或通过地址栏直接请求),post请求用来提交表单. get请求的参数在url之后,post请求的参数在请求体中 如果请求的参数含有中文,需要对其请求进行编码进行设置 post: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,

GET&amp;&amp;POST请求编码过程

编码.解码 我们在开发过程中不可避免的一个话题就是编码和解码,那么什么是编码什么是解码呢?为什么要进行编码和解码呢?下面我们一一分析! 编码和解码的概念 编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码.用预先规定的方法将文字.数字或其它对象编成数码,或将信息.数据转换成规定的电脉冲信号.编码在电子计算机.电视.遥控和通讯等方面广泛使用.编码是信息从一种形式或格式转换为另一种形式的过程.解码,是编码的逆过程.例如:"我是中国人!"按照UTF-8编码后为

javaweb笔记5之请求编码问题

post提交: 设置实体内容的编码:request.setCharacterEncoding("utf-8"); 注意:一定要在获取所有参数之前设置,否则设置无效! get方式提交 (1)手动进行参数的解码 String paramValue = new String(paramValue.getBytes(("iso-8859-1"),"utf-8")) (2)修改tomcat的配置文件 修改%tomcat%/conf/server.xml,加

java web 一次请求编码设置的过程

简单的认为:pageEncoding是jsp文件本身的编码:contentType的charset是指服务器发送给客户端时的内容编码.例如:pageEncoding="GBK".这句话的意思是,告诉JVM 这个jsp本身采用的"GBK"编码,在JSP编译成Servlet传给JVM的时候,就用“GBK”的编码方式将Jsp网页源文件翻译成统一的UTF-8形式的Java字节码.如果不加设定,则JVM默认的用ISO-8859-1这种编码方式.contentType里的cha

tomcat配置get请求编码方式

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>