HTTP请求乱码问题

来源:互联网 发布:centos 输入法切换 编辑:程序博客网 时间:2024/06/11 05:43

为什么会产生乱码??

-当表单提交时,浏览器会对中文参数值进行编码(会使用打开表单所在页面时的字符集进行编码)

-Web服务器在默认情况下会使用iso-8859-1去解码

-编码与解码方式不一致时,就会产生乱码


1.解决POST方式时的乱码问题

1>确保表单所在页面按照指定的字符集打开

<meta http-equiv="content-type" content="text/html;charset=utf-8">

2>在服务端按照这个编码格式解码即可

-request.setCharacterEncoding("utf-8")

-添加在读取参数的前面

-此方法只针对post请求有效


2.解决GET方式时的乱码问题

1>使用meta确保表单所在页码按指定字符集打开

2>在服务器端使用如下方式获取参数值

String username=request.getParameter("");

username=new String(username.getBytes("iso-8859-1"),"utf-8");


3.如何解决输出内容的乱码

-在获取WriteOut对象及调用out方法之前调用setContentType方法

-response.setContentType("text/html;charset=utf")

作用:通知容器在调用out.println方法输出时,会使用指定的字符集

-生成消息头中content-type的值,通知浏览器,服务器返回的数据类型和字符集


utf-8中,一个中文对应三个字节

GBK一个中文是两个字节

unicode所有字符都是占2个字节




原创粉丝点击