您的位置:首页 > 其它

中文乱码问题

2016-06-13 00:20 211 查看
一、常见的编码格式

1) ISO8859-1属于单字节编码,最多能表示字符范围是0~255,应用于英文系列。

 

2) GB2312/GBK属于汉字的国标码,专门用来表示汉字的,是双字节编码,兼容ISO08859-1编码。

     GBK表示同时表示繁体字和简体字,GBK兼容GB2312。

3)Unicode 属于最统一的编码,可以表示所有的语言的字符,定长双字节编码。不兼容任何其他的编码,定长便于计算机处理,java就是用Unicode编码处理的。

4)UTF-8

考虑到Unicode编码不兼容ISO8859-1编码,而且容易占用更多的空间,就产生了。UTF编码是不定长的,每一个字符的长度为1~6个字节不等。英文占一个,汉字占三个字节。

二、解决方案

1.jsp编译

<%@page contentType="text/html" pageEndcoding="GBK"%>

2.jsp输出

 指定文件输出到browser时使用的编码,设置文件头。

<%@page contentType="text/html;charset=GBK"%>

与设置response.setCharacterEnding("GBK")

3.META

 <META http-equiv.......charset=GBK"/>

如果采用了jsp输出和meta设置两种编码指定的方式,则jsp优先。

4.form设置

<from accept-charset='gb2312'>

不设置,浏览器也会使用网页的编码

三、web应用程序乱码的原因

1.jsp页面被编译为class时,如果未指定字符集,默认使用ISO8859-1的编码格式,这样中文就会乱码。

2.使用表单时如果设定提交方式为post而没有设置提交的编码格式,也会默认ISO提交,而接受的jsp却以UTP-8的方式接受。

3.GET提交数据时,tomcat会以GET的默认方式ISO对汉字进行编码,后追加URL,导致乱码。

解决方案

1.在eclipse中设置jsp文件编码格式

2.指定jsp的字符集

3.在程序获取页面数据时

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

responset.setCharacterEnconding("gb2312");

4.将中文作为参数传递时:

www.weihua.jsp?username="+java.net.UTLEncoder.encode(uername)

然后在接受页面:

username=new String(request.getParamenter("uesername").getBytes("8859-1"));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: