Http响应乱码

方案1

response.setHeader("Content-Type", "application/json");
response.setCharacterEncoding("GBK");
//Content-Type: application/json;charset=GBK
//{code: "401", message: "未登录"}

方案2

response.setHeader("Content-Type", "application/json;charset=UTF-8");
//{code: "401", message: "未登录"}
//Content-Type: application/json;charset=UTF-8

注意

只设置Content-Type不带编码信息无效

/*
只设置Content-Type,没有带编码信息,String中的中文是UTF16编码的。tomcat以其默认的ISO-8859-1从String中获取字节。tomcat附加在Content-Type的编码是charset=ISO-8859-1,浏览器会以这个编码解码,但是得不到原始中文信息。
*/
response.setHeader("Content-Type", "application/json");
//{code: "401", message: "???"}
//Content-Type: application/json;charset=ISO-8859-1

只设置response.setCharacterEncoding("GBK"),知识tomcat以GBK编码从String对象中获取字节。但是此时没有Content-Type信息。也就是浏览器将会用默认的类型和编码解析响应。不一致也会出现乱码。

//tomcat将字符串按GBK编码转为字节,但是浏览器收到字节后,按照默认编码解析将会乱码。
response.setCharacterEncoding("GBK");
//{"code":"401","message":"δ��¼"}

最新文章

  1. apache 虚拟机配置
  2. [Java面试十二]数据库概念相关
  3. django views中提示cannot convert dictionary update sequence element #0 to a sequence错误
  4. MVC – 3.EF(Entity Framework)
  5. Turing Test
  6. java中用中国网建提供的SMS短信平台发送短信
  7. javaEE学习笔记-利用DOM4J解析xml至数据库
  8. [Tommas] 测试用例覆盖率(二)
  9. SQL Server2008数据库自动备份步骤
  10. 【POI2003/2004 stage I】
  11. 如何配置visual studio 2013进行负载测试-万事开头难
  12. Android-----js和android的互调
  13. python全栈开发day117-MongoDB,pymongo
  14. git上传
  15. Netty实战六之ChannelHandler和ChannelPipeline
  16. 数字图像处理的Matlab实现(3)—灰度变换与空间滤波
  17. Ubuntu命令行快捷启动Matlab
  18. htm5-websocket实现数据查询应用
  19. 使用idea搭建SSM框架
  20. 给父元素与子元素分别设置visibility注意点

热门文章

  1. Day5- Python基础5 模块导入、time、datetime、random、os、sys、hashlib、json&pickle
  2. vmware workstations 虚拟机安装CentOS
  3. Java Web 学习(6) —— Spring MVC 之校验器
  4. bzoj3293 分金币
  5. 【洛谷5072】[Ynoi2015] 盼君勿忘(莫队)
  6. 请不要嘲笑你身边那些投了P2P的朋友
  7. H5生成二维码
  8. jQuery 源码分析(十三) 数据操作模块 DOM属性 详解
  9. Django多进程滚动日志的问题
  10. java基础(23):字节流、字符流