jsp中文编码

字符编码
计算机中的信息包括数据信息和控制信息,数据信息又可分为数值和非数值信息。非数值信息和控制信息包括了字母、各种控制符号、图形符号等,它们都以二进制编码方式存入计算机并得以处理,这种对字母和符号进行编码的二进制代码称为字符代码(Character Code)。计算机中常用的字符编码有ASCII码和EBCDIC码(扩展的BCD交换码)。

字符集
ASCII码:于1961年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的PC都使用此码。ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。比较EBCDIC。其中95个字符可以显示。另外33个不可以显示。 标准ASCII码为7位,扩充为8位。

GB2312 :是ANSI编码里的一种,对ANSI编码最初始的ASCII进行扩充,为了满足国内在计算机中使用汉字的需要,中国国家标准总局发布了一系列的汉字字符集国家标准编码,统称为GB码,或国标码。其中最有影响的是于1980年发布的《信息交换用汉字编码字符集基本集》,标准号为GB 2312-1980,因其使用非常普遍,也常被通称为国标码。GB2312编码通行于我国内地;新加坡等地也采用此编码。几乎所有的中文系统和国际化的软件都支持GB 2312。

GBK:汉字内码扩展规范,K为扩展的汉语拼音中“扩”字的声母。英文全称Chinese Internal Code Specification。GBK编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,1980年由国家标准总局发布。基本集共收入汉字6763个和非汉字图形字符682个,通行于中国大陆。新加坡等地也使用此编码。

UTF-8:为了提高Unicode的编码效率,于是就出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个字节就够了。

用来解决中文字符乱码的几条语句
<%@ page contentType=”text/html; charset=gb2312” language=”java” %>
编码格式为jsp文件的存储格式。保存的jsp文件将以这种编码方式保存。这条语句可以用来解决jsp页面显示的乱码问题。

String s=new String(request.getParameter(“name”).getBytes(“ISO-8859-1”),”gb2312”) ;
如果使用该方法的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。而且在使用?name=value将值传到这个页面的时候时候产生的乱码可能别的方法都不行,但这个特别有用。我觉得可能的原因是因为在jsp将这些值传到下一个页面的时候有进行了另外的编码,采用了其他的编码方式,但是传到目的页面时又采用其他的编码方式来解码,最终编码方式和解码方式不一致当然会产生乱码了。

request.seCharacterEncoding (“gb2312”)
在所有的请求前面加上这句话,就可以对请求进行统一编码,就可以获取从上一个页面传过来的中文值,实现了中文的正常显示。

jsp乱码问题确实是新手比较容易遇到的问题,但网上也有很多很好的关于jsp乱码的博文可以参考。这里我只是做一个个人的总结,作为学习的笔记。一则便于以后查阅,再则也是今后总结的依据。

分享到 评论