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");

java后台与jsp前台特殊字符处理(字符串编码与解码)

在后台与前台数据交互时如果有特殊字符就很容易出现问题,所以就需要对字符串进行编码传输,在获取后再进行解码: 1.java后台进行编码与解码 URLEncoder.encode(str,"utf-8...

在eclipse中查看sources源码和JavaDoc帮助文档

在eclipse查看sources源码和JavaDoc帮助文档

tomcat突然不能用的原因及其解决方法

    前两天心血来潮装了个叫Qvod Player的播放器,这个播放器也确实不奈--只有四M左右可播放的效果却有目共睹,而且可以打开种子文件支持在线收看电影(实际上是边看边下的)。用得爽是爽,当然也...

关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题

1.服务器(Server)响应,浏览器(Brower)请求:   对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应。在JavaWeb项目中,大致包含.java文件的数据处...

JSP对浏览器发送来的数据进行重新编码的两种方案

在JSP/Servlet中主要有以下几个地方可以设置编码,pageEncoding="GB18030",contentType="text/html;charset=GB18030"、request....

JSP对浏览器发送来的数据进行重新编码的两种方案

最近做的DRP项目中,使用JSP操作中文时,经常会出现一些乱码问题。这些问题导致中文无法输入,或者是无法正常显示。这里就涉及到了字符集的设置、字符集的编码方式。       在JSP/Servlet中...

JavaWeb中浏览器URL编码,GET乱码问题方式乱码解决

客户端提交数据到服务有两种方式GET和POST 1.get方式 数据直接在url上进行拼接,使用&分隔key-value对. 但有时key,value会出现中文等对于html标准来说不安全的字符 ...

JavaWeb中浏览器URL编码,GET乱码问题方式乱码解决

客户端提交数据到服务有两种方式GET和POST 1.get方式 数据直接在url上进行拼接,使用&分隔key-value对. 但有时key,value会出现中文等对于html标准来说不安全的字符...

《JavaWeb---Servlet的简单例子》---响应浏览器的请求,向浏览器输出数据

1.      开发java web要有服务器来给我们提供服务。将我们的应用部署到服务器上。 我用的是tomcat服务器。点击下载 相关的配置可以在网上找到教程。 2.      在我们的应用中...

【Javaweb】修改Eclipse for JavaEE中新建Jsp的默认编码,避免每次新建都要改编码的问题

Eclipse for JavaEE中新建Jsp的默认编码是ISO-8859-1, 这让人非常苦恼,每次新建一个Jsp都要按Ctrl+F,把所有ISO-8859-1替换成utf-8,才可以。 具体...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javaweb(二):JSP响应数据和浏览器解析数据的编码问题
举报原因:
原因补充:

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