JSP乱码处理以及常见编码集

1、乱码问题
  <1>、在JSP页面中,由于页面调转而导致不同页面的编码不一致,引起乱码(指中文)
 解决:   
 例如在提交的表单中通过 String username = request.getParameter("username");
 得到用户名,如果传参的页面与得到参数的页面编码(这里为GBK)不一样就会导致乱码,通常的做法是
 利用 username = new String(username.getBytes("ISO-8859-1"),"GBK");语句将得到的参数转化为GBK的编码方式;
 如果传递的参数很多,不可能一一转换这时用 request.setCharacterEncoding("GBK");和 response.setCharacterEncoding("GBK");
 通过这两个语句规定在当前页面接收或者传递参数的编码都为GBK;从而避免页面跳转时的乱码出现。
 <2>在JSP中由于编译器或者是使用的数据库的编码和页面编码不一致导致;
 解决:
 例如:在MyEclipse中可以通过‘首选项’中的设置来改变页面所使用的编码方式。
       在Mysql数据库中可以通过改变my.ini文件中编码方式等途径实现改变 。


String str = new String(str.getBytes("ISO8859-1"),"gb2312");
                 getBytes()是在源字符串的编码方式为ISO8859-1的情况下,将源字符串转换为Unicode编码的
                 字节数组,然后再将这个字符数组的编码方式转换为gb2312成为新的字符串。

常见编码集:

ISO-8859-1  编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF           
之间是文字符号ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧           
元符号出现的比较晚,没有被收录在ISO-8859-1当中。因为ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中           

传输和存储其他任何编码的字节流都不会被抛弃。换言之,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题。这是个很重要           
的特性,MySQL数据库默认编码是Latin1就是利用了这个特性。ASCII编码是一个7位的容器,ISO-8859-1编码是一个8位的容器。Latin1是           
ISO-8859-1的别名,有些环境下写作Latin-1。
ASCII (American Standard Code for Information Interchange,美国信息互换标准代码)是基于罗马字母表的一套电脑编码系统,
       它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO 646。
GB2312 又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施,
       是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要。在中国大陆
       和新加坡获广泛使用
GBK    字符集是GB2312的扩展(K),GBK1.0收录了21886个符号,它分为汉字区和图形符号区,汉字区包括21003个字符。
       GBK字符集主要扩展了繁体中文字的支持。
BIG5   又称大五码或五大码,1984年由台湾财团法人信息工业策进会和五间软件公司宏碁 (Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大众          
 (FIC)创立,故称大五码。Big5码的产生,是因为当时台湾不同厂商各自推出不同的编码,如倚天码、IBM PS55、王安码等,彼上此不能兼容;
       另一方面,台湾政府当时尚未推出官方的汉字编码,而中国大陆的GB2312编码亦未有收录繁体中文字。
GB18030  的全称是GB18030-2000《信息交换用汉字编码字符集基本集的扩充》,是我国政府于2000年3月17日发布的新的汉字编码国家标准,
         2001年8月31日后在中国市场上发布的软件必须符合本标准。GB 18030字符集标准的出台经过广泛参与和论证,来自国内外知名信息
         技术行业的公司,信息产业部和原国家质量技术监督局联合实施。
ANSI编码 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延       
 伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
Unicode 字符集编码是(Universal Multiple-Octet Coded Character Set) 通用多八位编码字符集的简称,支持世界上超过650种语言的国际字符集      
  。Unicode允许在同一服务器上混合使用不同语言组的不同语言。它是由一个名为 Unicode 学术学会(Unicode Consortium)的机构制订的字符         
 编码系统,支持现今世界各种不同语言的书面文本的交换、处理及显示。该编码于1990年开始研发,1994年正式公布,最新版本是2005年3月31   
      日的Unicode 4.1.0。Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语   
      言、跨平台进行文本转换、处理的要求。UTF-32、UTF-16 和 UTF-8 是 Unicode 标准的编码字符集的字符编码方案,UTF-16 使用一个或两个     
  未分配的 16 位代码单元的序列对 Unicode 代码点进行编码;UTF-32 即将每一个 Unicode 代码点表示为相同值的 32 位整数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值