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");方法指定服务器发送给浏览器的数据采用的编码方式
服务器解析浏览器发送的数据出现乱码问题的详细解决方案可以参考:服务器解析浏览器发送的数据出现乱码问题
热门推荐
梨状肌疼痛应该怎么办
别以为上户口才会用到出生证明!成年以后可能都有用途
泰式琵琶虾的制作方法(让你在家也能吃到正宗的泰式美食)
二十四节气专题
脏腑辨证:总共涉及证候58个之心与小肠病辨证
4K 和 8K 电视的区别有哪些?从分辨率开始就不同
身上起了红疙瘩,是湿疹还是荨麻疹?
《复活》:托尔斯泰笔下的生命奇迹
数码产品丝网印刷的成本大概是多少?
月租8800元,我还是租到了有毒"串串房"
启迪认知 | 社会应该消除对精神疾病的误解
小孩心理承受能力差怎么去锻炼
如何完美冲泡大红袍茶?
测试胎压监测器的方法
如何判断宠物猫是否怀孕(15个步骤让你轻松了解猫咪的怀孕情况)
别再精神内耗了!这么做走出反刍的迷雾→
微整注射医生解析:玻尿酸大、中、小分子有何不同?如何选择?
阿西莫夫三定律 还适用于今天的AI吗
Stable Diffusion参数详解:步数、采样方法与提示词引导系数
从脚本到成片:揭秘高端宣传片制作的7个核心流程
招商银行信用卡协商退息流程详解
如何让两台虚拟机连接
如何改善四肢冰冷?
Mysteel解读:2024禽肉进口接连解禁,10月鸡肉出口再破新高!
河南汝南:发展特色产业 促进乡村振兴
员工安全培训:个人防护与安全意识培养
分析用户地域特征,怎样优化AI搜索结果以提升区域精准度?
CNC加工中如何控制质量?
两岸同胞共祭保生大帝
老年猫选粮:营养全面,易消化为主