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");
方法指定服务器发送给浏览器的数据采用的编码方式
服务器解析浏览器发送的数据出现乱码问题的详细解决方案可以参考:服务器解析浏览器发送的数据出现乱码问题
热门推荐
《莫尼山》:一首蒙古族经典歌曲的艺术魅力
牙齿正确咀嚼方法 咀嚼食物的正确方式
新食品原料——蓝莓花色苷的健康功效
2025十大适合摆地摊赚钱的创业项目
提升跨地域数据同步的效率
喹诺酮三剑客:药物特性大揭秘
对 ADHD 的现代理解:超越传统观点
自动锁车功能的设置方法是什么?自动锁车功能的安全性和便利性如何?
地表水总磷和总氮的检测标准
高跟鞋:历史与现代趋势
10000是什么电话号码?
张雪峰谈2026双一流大学:哪些高校在人才培养上独具特色?
如何区分不同股票代码的含义?这些代码在投资中有何作用?
合理设置文件夹权限,确保数据安全与隐私保护的实用指南
春天的景象怎么写?写出春天最美妙的细节和意境!
去银川旅游吃什么好 银川旅游美食推荐
退休人员劳动关系的问题一般是怎么处理的
一款充电式LED维修工作灯电路解析与故障排除
追寻匈奴的足迹:从古至今的民族融合
如何在预算内挑选最优机械手表?
重庆市职工退休金计算方法是什么?
药到病除:儿童发烧知多点
如何进行软件产品的人机交互优化
如何系统分析国内外研究现状及发展趋势?
号角砺忠魂 甘泉映赤心 当代青年学习的楷模——记志愿军战士、一等功臣李其寿
吲哚美辛的功效与作用
摩托车对于男人来说意味着什么?
鹏程万里:一个成语背后的远大志向
春节期间,广东深化"讲心不讲金"移风易俗获广泛响应
美国著名建筑之-独立大厅