java解决中文乱码

response被提交之前,如果 servlet 没有指定 字符编码,默认使用 ISO-8859-1

PrintWriter writer = response.getWriter();
writer.print("中文");
// 已经print再设置字符集无效
response.setCharacterEncoding("utf-8");

// 浏览器解析中文默认使用GBK字符集,如果不指定content-type会出现编(utf-8)解(gbk)码字符集不一致
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.print("中文");

// 告诉浏览器content的字符集
response.addHeader("content-type", "text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.print("中文");


setCharacterEncoding,setContentType 和 setLocale 方法可以被重复的调用来改变字符编码

response.addHeader("content-type", "text/html;charset=utf-8");
// 如果没有设置characterEncoding,但是设置了content-type的charset属性也会改变服务端编码的字符集
PrintWriter writer = response.getWriter();
writer.print("中文");

// 浏览器默认用gbk字符集解码content
response.setCharacterEncoding("gbk");
PrintWriter writer = response.getWriter();
writer.print("中文");

以上可得:在服务端返回有中文的数据时,要解决中文乱码问题:

可以只设置一个content-type: text/html;charset=utf-8

设置content-type响应头不仅可以告诉浏览器 解码的字符集,同时还可以改变服务端的 编码字符集

全部评论

相关推荐

学java时间比较短不到三个月,基本的技术栈都过了一遍就是都不太深,有个小项目。是继续找实习还是沉淀准备秋招呢?找实习的话会花很多时间在八股,放弃的话又怕秋招简历太难看。有无大佬支招
今天java了吗:1.一定要找实习,实习不一定要去,但是找实习过程中的面试经验和心态经验才是最重要的 2.八股本来就是大头,甚至比项目重要 3.这个时间段也是面试比较多的阶段,可以抓住机会锻炼。面试才会发现自己的不足,感觉自己会了和能给面试官娓娓道来是两码事
点赞 评论 收藏
分享
Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务