HttpServletResponse中的content-type响应头详解
创作时间:
作者:
@小白创作中心
HttpServletResponse中的content-type响应头详解
引用
CSDN
1.
https://blog.csdn.net/qq_29331365/article/details/90175203
HttpServletResponse的content-type响应头包含两部分内容:
一、设置服务器发送给浏览器的数据类型
response.setContentType("text/html"):浏览器会将当前页面按照HTML进行解析response.setContentType("text/xml"):浏览器会将当前页面按照XML进行解析response.setContentType("image/png"):浏览器会以图片的方式解析当前页面
- 设置以下载方式打开文件:
二、设置服务器发送给浏览器的数据编码方式
如果没有指定编码,浏览器解析结果可能会出现乱码。乱码的原因如下:
浏览器和服务器通信底层是通过socket实现的,而socket数据传输只能是字节数据,所以response.getWriter().write("data")发送的字符数据需要先转换成字节数据。
Tomcat服务器默认使用的编码为ISO-8859-1,所以服务器将字符数据转换成字节数据的方法为:byte[] buf = data.getBytes("iso-8859-1")。而浏览器使用的编码方式为UTF-8,即浏览器解析服务器发送过来的数据使用的方法为:new String(buf, "utf-8")。由于编码方式和解码方式不一致,所以导致乱码的产生。
解决乱码问题可以使用setContentType()方法设置服务器的编码方式,例如:
response.setContentType("text/html;charset=utf-8");
设置服务器编码方式还有一个方法:
response.setCharacterEncoding("utf-8");
效果和response.setContentType("text/html;charset=utf-8");一样。
如果服务器使用response.getOutputStream().write(b);方式发送数据给浏览器,则response.setCharacterEncoding("utf-8");没有效果,因为response.getOutputStream().write()发送的就是字节数据,不需要服务器再进行编码了。
注意:服务器使用UTF-8编码时,如果浏览器不是使用UTF-8编码,也会出现乱码。例如,把浏览器的编码方式改为GB2312时,中文也会变成乱码。
三、完美解决中文乱码问题
- 前端网页通过
<meta charset="UTF-8">方法指定form表单数据使用的编码方式 - 服务器端通过
request.setCharacterEncoding("utf-8");方法指定服务器解析浏览器发送数据的解码方式 - 服务器端通过
response.setContentType("text/html;charset=utf-8");方法指定服务器发送给浏览器的数据采用的编码方式
服务器解析浏览器发送的数据出现乱码问题的详细解决方案可以参考:服务器解析浏览器发送的数据出现乱码问题
热门推荐
西格玛男人:当代社会的孤独英雄?
西格玛男人:从网络迷因到文化现象
西格玛男人的情感世界:真实还是虚幻?
安徽:科技引领新业态 智慧文旅谱新篇
合肥到九华山最佳方案
手上有六个螺,你是不是也这样?
"手上六个洛"的现代解读:成功人士的特质与培养
一碗汤里的玄机:海龟汤游戏的前世今生
文化中国行丨唐风汉韵弦歌不辍 千年古都今朝更盛
诸葛亮在汉中:军事活动与文化发展的交织
让宝宝拥有健康的睡眠习惯:从理解到实践
NIST推荐:CRYSTALS-Kyber应对量子威胁
谷歌量子芯片突破:8小时破解2048位RSA加密,全球数据安全面临重大挑战
广西老表的挚爱,螺蛳粉的8种神仙吃法,味臭浓鲜,风味嘎嘎棒
红药水:从“万能药”到边缘化,家庭护理该如何选择?
红药水被淘汰后,谁是你的新宠?
互动健身设备:未来发展将更加智能化个性化
高温运动指南:7个实用技巧助你安全度过运动季
云南峨石红、云兰、古宁等8个高速公路项目取得新进展
父母偏心怎么办?咱们到底该怎么办呢?
提升你的烹饪技巧!日本料理调味料的全面指南
新年环保新玩法:告别黑老大烟花
学画画每星期学多久才够基本?
晕染技法解析:从基础到高级
艺术创作有何评判标准?
海龟汤推理游戏爆红社交平台,你敢挑战吗?
海龟汤的滋补秘密:海龟肉+老母鸡
俄乌冲突再升级,金价飙升至新高!
【何以中国 行走河南】人这一辈子,一定要去一趟洛阳!
新冠后金价飙升,美元贬值成推手?