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.获取字符流对象写给浏览器


浙公网安备 33010602011771号