http请求中的中文乱码问题

2021-06-29 00:03

阅读:529

标签:nbsp   简单的   output   服务器   eth   ext   pre   资源   标签   

通过浏览器访问服务器页面和资源时,不可避免地要传送中文字串,如果客户机与服务器不能用同一码表解析字串,肯定会出现各种各样的乱码问题。我总结了几个乱码场景及解决办法,如下

1、服务器上的中文字串被客户端访问时出现的乱码问题

原因:浏览器在解析中文时,不知道该用什么码表去解析,就会用默认的gb2312去解析,肯定会出现乱码

解决办法:以什么码表写入流,在响应的请求头里就告诉浏览器用什么码表,例子使用utf-8

//告诉浏览器使用UTF-8码表解析
response.setHeader("Content-type","text/html;charset=UTF-8");//如果写成text/html,charset=UTF-8就会变成了下载,一定要小心
String data="我是谁“;
OutputStream out = response.getOutputStream();
out.write(data.getBytes("UTF-8)); //以UTF-8写入输出流
//告诉浏览器使用UTF-8码表解析
response.setHeader("content-type","text/html;charset=UTF-8");
//告诉response以什么码表向浏览器写出数据
response.setCharacterEncoding("UTF-8");
String data="我是谁“;
OutputStream out = response.getOutputStream();
out.write(data); 

上面两种方法的效果是一样的,除了上面两种写法,还有一种更简单的写法,效果同上。

//告诉浏览器使用UTF-8码表解析
//告诉response以什么码表向浏览器写出数据
response.setContentType("text/html;charset=UTF-8");
String data="我是谁“;
OutputStream out = response.getOutputStream();
out.write(data);

最后一种写法原理与上面三种不一样,这是在html文档里通过meta标签告诉浏览器使用什么码表

//告诉浏览器使用UTF-8码表解析
String data="我是谁“;
OutputStream out = response.getOutputStream();
out.write("".getBytes());
out.write(data.getBytes("UTF-8)); //以UTF-8写入输出流

 

http请求中的中文乱码问题

标签:nbsp   简单的   output   服务器   eth   ext   pre   资源   标签   

原文地址:http://www.cnblogs.com/lovemo1314/p/7142582.html


评论


亲,登录后才可以留言!