jsp(7)(response,乱码的问题)

1.接口:htttpServletRequest,httpServletResponse,因为该对象都是由服务器创建的。

web服务器会把
每次请求封装成request对象(接口:htttpServletRequest),可以通过request对象获得提交的数据; 每次响应封装成response对象(接口:httpServletResponse),可以向客户端发送消息。
response封装了发送数据,响应头,响应码的方法。

2.通过response向浏览器发生数据会出现乱码

原因是数据的编码和浏览器打开的编码不一致,(浏览器虽然可以手动修改编码,但是无可取!)

2.1采用字节流响应浏览器:

(1.可以通过响应头让服务端通知浏览器采用指定的编码显示数据。

注意:text/html;charset=utf-8之间是分号!不是逗号

(2.还可以通过浏览器的meta标签来模拟服务端的响应(虽然这个标签是通过服务端发送的)

   浏览器解析meta标签指定的编码,认为是服务端要求浏览器使用的编码。

 

    补充:输出数值类型出现乱码,因为通过字节码传递,浏览器在解析时把数字当成是编码解析成对应字符,所以需要数字变成字符串!

    

    补充:关于转码,就是将字符转换为编码,然后将编码转换为字符,这两步都需要参考一个字符集类型,不一致就会出现乱码。

(虽然java字符默认是unicode编码存储的,但是程序传输的时候,取的是字符,然后将字符(默认是iso-8859-1)转换成编码传输,转换没有找到对应的编码就会显示成“??(未知字符问号)”

2.2.采用字符流对象写给浏览器,同样也需要注意乱码:

 (1.首先要指定服务端字符流采用的编码类型response.setCharacterEncoding("utf8"),同时指定浏览器的解码方式:

 上面1,是常规方式,servlet提供一种更便利的方式2,拥有上面同样功能(同时指定服务端编码,以及浏览器解码)

(2.获取字符流对象写给浏览器

 

posted @ 2017-01-30 19:11  假程序猿  阅读(402)  评论(0)    收藏  举报