admin管理员组文章数量:1536769
2024年5月11日发(作者:)
中文乱码总结:
1-->响应中的乱码:
单个页面中,如果出现中文(注意不是post中文也不是get中文,只是显
示中文而已),而且使用的是
<%@page contentType="text/html;charset=iso-8859-1"%> 此时显示的
中文就是乱码,为什么呢?
因为charset=iso-8859-1 是设置http的响应(response)中的编码信息,
因为是中文,所以http给浏览器显示的
汉字是乱码。
2-->post乱码:
两个页面(或多个页面)通过form表单post传值(form的默认提交方式
都是GET)时,这里与1不同,为什么呢?
因为此时发送了请求有request,而1中没有request只是响应而已。发送
请求的时候,使用的编码默认的是iso-8859-1,
意味着只有英文是有效字符,这个限制是因为当初指定http标准的成员都
来自英语国家,所以如果使用默认的方式
从请求获取数据,中文一定会全部变成乱码。此时就要加上
racterEncoding("gbk");有了
请求racerEncoding("gbk")编码方式和http的响应
(response)中的编码信息
<%@pagecontentType="text/html;charset=gbk"%>
两个都gbk,此时body中的(注意是body,如果是url就会有问题往下看
就知道了)中文就不会显示为乱码
a---乱码出现的过程是这样的,传的是汉字,发送请求的默认编码是
iso-8859-1,此时把汉字 按iso-8859-1转码出现问题 出现??或莫名的符号,
响应的时候位数都打乱了(iso-8859-1和gbk编码位数不一样),虽然
<%@pagecontentType="text/html;charset=gbk"%>但还是会出现乱码。
b---而采用racerEncoding("gbk")设置请求编码后的话,汉字
就不会被转成乱码。
3-->get乱码
POST方式下的解决方式还算简单,因为POST方式下提交的数据都是以二进
制的方式附加在http请求的body部分发送,
只需要在后台指定编码格式就足矣解决。
GET方式下会将参数直接附加到url后面,这部分参数无法使用
racterEncoding()处理,结果就是get形式的所有中文都变成了
乱码
解决方法:
先从request中获得参数(因为无法设置编码方式,所以汉字以编码
iso-8859-1传过来),接着把字符串按照iso-8859-1
编码打散成byte数组,然后用gb2312编码组合成新字符串,
最后打印出来就是正常的中文了。
<%
String username = ameter("username");
byte[] bytes = es("iso-8859-1");
String result = new String(bytes, "gb2312");
(result);
%>
写在一起就是:
<%=new
String(ameter("username").getBytes("iso-8859-1"),
"gb2312")%>
Java/JSP中文乱码问题解决心得
自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得
到了彻底的解决,现将我们的解决心得与大家共享。
一、Java中文问题的由来
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台
性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文
件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。
首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保
存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编
版权声明:本文标题:jspjava乱码解决 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1715362535a448358.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论