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文件过程中,使用的编

本文标签: 乱码编码问题方式