http 响应报文中 ContentType 里的编码方式是浏览器对内容的解码方式,还是服务器对内容的编码方式

查看 88|回复 5
作者:rookiemaster   
在 springboot 项目里,我有如下设置:
server:
  servlet:
    encoding:
      charset: GBK
      force-response: true
然后 Controller 如下:
@RestController
public class TmpController {
    @GetMapping("/test")
    public Result test() throws UnsupportedEncodingException {
        String hello =  "你好";
        String newhello = new String( hello.getBytes("GBK") , "GBK");
        System.out.println(newhello);
        return Result.success(newhello);
    }
}
就是我想把一个字符串用 gbk 编码发给浏览器,然后让浏览器用 gbk 解码,但是最后浏览器显示的是乱码,不知该如何解决。

gbk, newhello, string, 浏览器

infun   
是服务器告诉浏览器可以用什么编码来处理
你看一下浏览器端拿到的信息是怎样的?
rookiemaster
OP
  
这样的 {"code":0,"message":"鎿嶄綔鎴愬姛","data":"锟斤拷锟�"}
然后 ContentType 是 application/json;charset=GBK
NessajCN   
@rookiemaster 你看到「锟斤拷」不就很明显了吗,
必然是你浏览器解析用的是 gbk, 而发上来的是 utf-8 字节。
并且这串 utf-8 同样是乱码,因为有占位符。
所以推测是你哪里多了一步 把 gbk 转成了 utf-8 发给了浏览器
lax   
浏览器的网页部分本体是什么编码方式?
hfc   
hello="你好"这里的 hello 是 utf8 ,getBytes("GBK")这里就错了吧
您需要登录后才可以回帖 登录 | 立即注册

返回顶部