javade html乱码,乱码的产生与解决-JavaWeb开发

从请求与响应入手,这是经过tomcat的两个必经之路;

页面:

当页面设定了编码集(utf8)

请求A. 是post(传递的数据放在请求体中):

B.是get(此时服务端设置utf8编码集不起作用,因为数据是经过请求行,而之前是经过请求体。)

服务器(web容器):

默认设置ISO-8859-1字符

服务端小程序(servlet)

此时工作空间为UT8

A.request.setCharacterEncoding("utf8");此时不会以ISO-8859-1生成字符,而是生成UTF8.所以不乱码。

B.new String(request.getParmt("...").getBytes("ISO-8859-1"), "UTF8");此时生成UTF8字符

响应 1.response.setCharacterEncoding("UTF-8");只是设置web容器的字符集为utf8

2.response.setHeader(content-type,text/html;charset=utf8)不光告诉tomcat,还告诉浏览器字符集为utf8(缩写代码为:response.setContentType(“text-html;charset =utf8”)

响应下载:

a.除了读写文件之外.还是设置强制下载文件类型.

response.setHeader("Content-Disposition","attachement;filename ="+name)

b.这时将new String(getBytes("gbk"), "ISO-8859-1")此时name可以传入a.了

c.拓展:设置浏览器解析文件类型:

response.setHeader("Content-Type",this.getServletContent.getMimeType("web-content下的某个文件夹”+name)(但这一步浏览器自动做)

最后注意编程时:不得响应字符流与字节流同时使用。会报web容器已经用过getWriter()

浏览器:

1.此时浏览器默认的如果是gbk字符那么就会产生乱码,因为底层字节是utf8的。

a.默认编码集为gbk的会出现下载中文的文件名,不显示文件名。

注意:浏览器有缓存资源的功能。业务场景:点击更改验证码.此时请求servlet路径不变。图片不发生改变.解决方案是:使用请求行加参数。?time=new Date().getTime().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值