Http响应和请求的编码问题
来源:互联网 发布:石大access数据库应用 编辑:程序博客网 时间:2024/05/09 20:51
1.HttpServletRequest请求中的编码一致
通过Html的表单<form>向服务器提交数据,在Servlet中通过request.getParameter(key)来获得参数值,由于Http请求的默认字符编码为ISO-8859-1,需要在获得参数值之后进行字符编码转换。E.g.
Html表单:
<form action="/TestPro/servlet/CheckServlet">
输入:<input type="text" name="name" />
<input type="submit"/>
</form>
CheckServlet:
String name = request.getParameter("name");
String name_u = new String(name.getBytes("ISO-8859-1"), "utf-8");
【注意】此处之所以是转化为utf-8的编码格式,是因为<form>表单的编码格式是utf-8。在html的<head>中:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
当然此处的charset也可以指定为GB2312,同时在request中获得参数后,转化后的编码格式也得是GB2312,否则会出现乱码。
2.HttpServletResponse响应中的编码
HttpServletResponse有两种方式响应Brower,一种是OutputStream字节流,二种是PrintWriter字符流。
2.1 OutputStream字节流(字节流的编码格式与ContentType的编码格式要一致)
response.getOutputStream().write("天马行空".getBytes("utf-8"));
response.setContentType("text/html;charset=utf-8");
//也可以通过以下两种方式
response.setHeader("Content-Type","text/html;charset=utf-8");
//或者
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
2.2 PrintWriter字符流(只需指定ContentType的编码格式)
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
Out.println("天马行空");
Out.write("天马行空"); //两种输出方式效果一样
- Http响应和请求的编码问题
- HTTP请求和响应中 中文urlEncode urlDecode编码问题
- 全站编码问题 请求和响应编码的处理
- HTTP的请求和响应
- HTTP和HTTPS的请求和响应
- HTTP请求和响应。
- Http请求和响应
- HTTP请求和响应
- HTTP请求和响应
- Http请求和响应
- HTTP请求和响应
- HTTP请求和响应
- HTTP请求和响应
- http请求和响应
- http请求和响应
- HTTP请求和响应
- HTTP的请求和响应详解
- HTTP的请求和响应详解(转)
- poj题目分析
- SDWebImage使用,图片加载和缓存
- 19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
- Ubuntu 14.04安装 Docker
- SQL server 数据库被标记为RESTORING的处理方式
- Http响应和请求的编码问题
- (13)树莓派B+ 读取DHT11温度湿度模块的数值
- Move vim cursor to a specific column
- HTTP 协议简介
- HDU---2035-人见人爱A^B (快速幂)
- android几种定时器机制及区别
- 【转载】巨页的原理分析
- 凌阳16位单片机之IRQ6中断
- ACM训练方案poj题目分类