javaweb(二):JSP响应数据和浏览器解析数据的编码问题

原创 2015年07月07日 22:17:35

Servlet的doXXX方法中,以doGet(HttpServletRequest request,HttpServletResponse response);方法为例,其中的response参数具有getOutputStream()方法和getWriter()方法。

1、在Windows平台下,使用下面的语句

response.getOutputStream().write("abcd".getBytes());

response.getOutputStream().write("中文无乱码".getBytes());

输出响应内容时,在客户端浏览器中显示,均不会产生乱码,原因是:

String类的getBytes()方法,不含参数时,默认使用特定平台(此处为Windows)上的编码方案(此处为GB2312,是GBK编码的子集),而浏览器也是默认使用特定平台上的解码方案,所以不会产生乱码。

2、在Windows平台下,使用下面的语句

response.getOutputStream().write("中文有乱码".getBytes("utf-8"));

输出响应内容时,在客户端浏览器中显示,会产生乱码,原因如1.解决这个问题的办法是添加下面的语句:

response.setHeader("Content-Type", "text/html;charset=utf-8");

3、在Windows平台下,使用下面的语句

response.getWriter().write("中文有乱码");

输出响应内容时,在客户端浏览器中显示,会产生乱码,原因是:

上述语句没有指定服务器端的编码方案,tomcat容器会默认使用ISO8859-1编码方案对writer()方法中的字符串进行编码,而浏览器端是特定平台的解码方案,所以会产生乱码,可能是多个?符号,因为ISO8859-1查不到编码方案时,会编码成?,而其他编码方案都是兼容ISO8859-1的,所以能够显示发过来的?。

解决的办法是分别设置服务器端的编码方案和浏览器端的解码方案:

		//设置服务器端编码方案
		response.setCharacterEncoding("utf-8");
		//设置浏览器端解码方案
		response.setHeader("Content-Type", "text/html;charset=utf-8");

另外:

使用下面的语句

response.setHeader("Content-Type", "text/html;charset=utf-8");
此时,因为设置浏览器解码方案了,服务器会自动使用对应的编码方案进行编码,也就是说,上面一句代码的作用,其实包含了3中的两句解决方案的作用。


最后,其实第1、2、3中所有的问题,可以用下面一句代码全部解决:

response.setContentType("text/html;charset=utf-8");


但是,为了不让其他人误解,建议还是要将下面的代码加上去:

response.setCharacterEncoding("utf-8");

JSP的response响应对象

response 对象用于响应客户请求,向客户端输出
  • u013125099
  • u013125099
  • 2014年06月03日 10:35
  • 2898

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

JSP页面编码Page character encoding指的是JSP文件和Tag文件本身的编码格式。如果web.xml中元素中配置了,页面上page指令的pageEncoding属性必须和web....
  • woxueliuyun
  • woxueliuyun
  • 2015年01月04日 16:08
  • 4946

JSP页面数据的前后台简单传递

JSP页面有几个内置对象,本文需要用到的几个如下: request:包括http请求参数 response:请求响应 pageContext:可以用这个对象获取request和response。...
  • qq_33745102
  • qq_33745102
  • 2017年05月25日 11:22
  • 2886

jsp获取随机数并跳转到相应的jsp

1.新建一个Dynamic Web Project文件,里面新建三个jsp文件,整体的结构框架如图所示: 2.one.jsp文件的代码如下所示: example ...
  • qq_29656961
  • qq_29656961
  • 2017年09月28日 13:28
  • 274

初学 Java web(三)JSP页面请求与响应

简单的用户注册界面 包括两个文件:zhuce.htm和zhuce.jsp zhuce.htm:显示注册表单界面 zhuce.jsp:获取所有的注册信息并显示 zhuce.html ...
  • baidu_34211956
  • baidu_34211956
  • 2017年11月22日 15:09
  • 106

Jsp /js乱码问题 文件,页面,浏览器编解码

关于jsp乱码问题的解决——最近做了个项目,遇到各种日文乱码问题,在此把别人和自己的经验汇总。首先说一下,好多文章解决日文乱码都是更改字符编码方式为Shift_js或者windows-31J,不过我发...
  • chengkaizone
  • chengkaizone
  • 2014年04月03日 09:28
  • 1738

SSH框架从底层数据库到jsp页面响应流程及注意事项

SSH框架完整实现从底层到jsp页面流程及注意事项本文主要是以后为自己留个印象,第一次完整的弄清楚ssh框架使用时的开发流程,本文主要以一个实现显示数据库中视频章节信息为例,一切从简,重在开发流程上。...
  • lyx0708
  • lyx0708
  • 2016年05月19日 20:08
  • 1247

使用JSP处理客户端请求

1、  为什么需要使用HTML表单在动态网页的开发中,HTML表单是与用户交互信息的主要手段。2、HTML表单一个表单至少应该包括说明性文字、表单控件、提交和重填等内容。表单的首要标记是,它有两个重要...
  • xinxin19881112
  • xinxin19881112
  • 2009年09月02日 15:44
  • 5723

JavaWeb的编码问题

无论是图片,文档,声音,在网络IO,磁盘io中都是以字节流的方式存在及传递的,但是我们拿到字节流怎么解析呢?这句话就涉及了编码,解码两个过程,从字符数据转化为字节数据就是编码,从字节数据转化为字符数据...
  • yuhaiqiang_123
  • yuhaiqiang_123
  • 2016年07月02日 16:14
  • 3101

JavaWeb中请求与响应的乱码问题

对于学习JavaWeb的同学,乱码无疑是令人最头痛的问题之一,当然博主也曾因为这样的问题弄得满头雾水,所以在这儿稍作总结。首先我们应该知道常见的字符编码都有哪些,以及出现乱码的根本原因是什么。   ...
  • nan_gua_xu
  • nan_gua_xu
  • 2015年05月08日 12:50
  • 1243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javaweb(二):JSP响应数据和浏览器解析数据的编码问题
举报原因:
原因补充:

(最多只允许输入30个字)