当前位置: 首页 > news >正文

response.setContentType()和response.setCharacterEncoding()使用区别及统一处理request和response编码

引入

在Servlet中,我们常常会处理服务器与浏览器之间传输的时候,中文乱码问题。

乱码原因:我们知道浏览器的编码方式是GBK,而Tomcat服务器中编码方式是utf-8,如果他们编码不一致,就会出现乱码

有一个比较好的解决方式是在doGet中加入两行代码
在这里插入图片描述

第一行处理浏览器发送给服务器数据的乱码问题,第二行处理服务器发回给浏览器数据的乱码问题

准确来说,这个已经是蛮好的解决方法了。就在今天下午写response的时候我突然看到了response.setCharacterEncoding(),我就在想,能不能有统一的方法处理request和response,让他们都用setCharacterEncoding()?
像这样↓
在这里插入图片描述

正文

在我兴致勃勃的尝试了之后,发现失败了。还是会出现乱码,这是我就想知道response.setContentType()response.setCharacterEncoding()区别在哪?为什么response.setContentType("text/html;charset=utf-8")就可以解决问题,而response.setCharacterEncoding("utf-8");却不行?


在查阅资料后,我了解到

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

等价于

response.setCharacterEncoding("utf-8");
response.setHeader("content-type", "text/html");

这两句意思是服务器响应给浏览器指定的编码,并且告诉浏览器根据服务端发回来的编码(utf-8)按照html的格式去读出来。所以浏览器本来准备用gbk解码但是后来被迫以utf-8的方式读了出来,那自然是没有问题了


接下来我们看

response.setCharacterEncoding("utf-8")

这句意思是服务器响应给浏览器的编码为“utf-8”,就这么一件事情!

我们知道这次的浏览器是没有被指派解码方式的,所以浏览器自然是用自己的默认gbk解码方式,而服务器发回来的编码确实utf-8,那自然乱码啦

所以如果非要用response.setCharacterEncoding(),那应该是服务器发回gbk编码的内容,让浏览器用gbk读取,那么就没问题啦,所以应该这样写↓

response.setCharacterEncoding("gbk")

这时就做到了统一的方法处理request和response的编码!
在这里插入图片描述

http://www.xdnf.cn/news/816931.html

相关文章:

  • python 网盘搭建_超简单!基于Python搭建个人“云盘”
  • 【MFC】Ribbon界面开发(一)
  • 刷机介绍----超详细
  • 公司内部邮件格式范文
  • SpringBoot -- 软件许可(License)证书生成+验证+应用完整流程
  • 手把手教你安装 Fedora
  • 计算机系列之排序算法
  • 2021年高考成绩查询宜春昌黎,2021年全国各省高考成绩排名查询系统入口
  • DIV简单个人静态HTML网页设计作品 WEB静态个人介绍网页模板代码 DW个人网站制作成品 期末网页制作与实现
  • Ubuntu下MPlayer(万能播放器)的使用
  • 利用百度API获取mp3及歌词lrc下载地址
  • 最全的Gateway统一网关快速入门
  • Java中的方法递归
  • HDL FPGA 学习 - Avlon 总线,从端口传输、主端口传输,单周期、可变周期传输
  • 盘点那些免费的AI对话工具(国内篇):国内TOP3 AI聊天机器人产品介绍
  • Spring ResourceLoader.getResource() getResources()的理解
  • 史上最全最新Ubuntu安装教程(图文)
  • ECshop 模板制作教程
  • sql2000数据库挂起问题
  • physxloader.dll x86_physxloader.dll
  • C语言-常用数学函数
  • HTML+HTML5基础教程_笔记
  • ChinaSoft 论坛巡礼 | 移动软件工程论坛
  • Perl安装教程
  • 《Java小游戏实现》:贪吃蛇
  • Python基础教程,Python入门教程(非常详细)
  • 轻松破解加密网页
  • Ubuntu系统中Apache Web服务器的配置与实战
  • 权力的游戏第七季/全集Game of Thrones迅雷下载
  • 单点登录(SSO)详解——超详细