在用jsp进行动态网页开发时时常会遇到乱码的问题,这里谈一谈对该问题的理解。

常用的编码格式有ISO8859-1、GBK、GB2312、UTF-8以及Unicode等。

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

GBK2312/GBK属于汉字的国标编码,专门用来表示汉字,是双字节编码,同时兼容英文。其中,GBK能够表示简体和繁体中文,GB2312只能表示简体。GBK兼容GBK2312.

Unicode属于最统一的编码,可以用来表示所有的语言,而且是定长双字节编码,但不兼容ISO8859-1且占用较多空间。

UTF-8是为了解决Unicode不便传输和储存的问题而产生的,兼容ISO8859-1,属于不定长编码。

在JSP开发中经常遇到的是GBK/gb2312、ISO8859-1、utf-8。乱码的产生就是因为这几种编码的差异。为了消除乱码就需要解决这种差异。在实际开发中有以下几种方法:

1、<%@ page cotentType="text/html;charset=gb2312">常用于一般的静态网页中

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

request.setCharacterEncoding("text/html;charset="gb2312"")

常用于Servlet响应中中

3、String test;

String t = new String(test.getBytes("ISO-8859-1"),"GB2312")

常用于jso与jsp的响应输出中。

如,<%=new String(user.getName().getBytes("ISO8859-1"),"GB2312")%>