j2ee关于响应头的传输猜想
服务器默认使用iso8859-1的编码格式将数据发送到客户端。对于响应体可以使用respones.setContentType("text/html;charset=uft-8")语句来设置服务器的编码格式,并告知客户端使用指定的编码格式解码。
但是对于响应头,似乎无法起效。这一点是我在写“excel下载“时碰到的,相关代码如下:
response.setContentType("octets/stream;charset=uft-8"); // 通知浏览器发送的数据的编码格式是utf-8且服务器使用utf-8编码response
String filename = "职员列表";
filename = new String(filename.getBytes("gb2312"),"ISO8859-1");//浏览器将头部按照gbk解码
response.addHeader("Content-Disposition","attachment;filename=" + filename + ".xlsx");
这段代码中头部携带的filename必须进行gbk编码后再用iso解码成字符串。
它的原理应该如下:
服务器端会按iso解码头部字符串,而客户端收到字节流后确实按gbk去解码。
所以字节流需要是gbk编码格式,而为了让服务器正确将字符串编码成字节流,
所以服务器端需要用iso格式解码字节流。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?