论文部分内容阅读
摘要:JSP是一种在服务器端编译执行的Web设计语言,在使用JSP程序的过程中,常遇到中文乱码问题,很多人为此头疼不已,初学的时候我就深受其害,而且使用平台不同,中文乱码问题的解决方法也不同,无形中增加了学习JSP的难度。该文对提出了四种解决中文显示乱码的解决办法。
关键词:字符集;字符编码;乱码
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)32-7861-02
计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如’a’用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",在解码过程中,如果使用了错误的解码规则,则导致’a’解析成’b’或者乱码。[1]
现在大部分具有国际化特征的软件核心字符处理都是以 Unicode 为基础的。中文字符集有GB2312-80,GBK ,Java 程序无论是以字符流读/写文件,还是从 URL 连接读取参数值,都会有字符编码的转换。从理论上来说,这些根据字符集设置而进行的字符转换不应该产生太多问题。而事实是由于应用程序的实际运行环境不同,Unicode 和各个本地字符集的补充、完善,以及系统或应用程序实现的不规范,转码时出现的问题时时困扰着程序员。该文就显示中文时出现乱码的问题的解决办法作一个简单的介绍,希望能让大家从中受益。
1 JSP页面显示中文乱码的解决办法
在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。如果是在JSP页面中写入如下页面指令<%@ page language="java" import="java.util.*" %>,那么在该页面中如果要显示中文就一定会出现乱码,原因在于它没有在JSP中指定页面显示的编码,消除乱码的解决方案很简单,首先需要在建立了一个WEB项目后,把该项目的编码集先修改成GBK,这样可以减少很多有关显示中文乱码的问题。然后把page指令改为<%@ page language="java" import="java.util.*" contentType="text/html; charset=GBK" %> 即可。原理就是向页面指定编码为GBK,那么页面就会按照此编码来显示,于是乱码消失。在NetBeans下创建JSP页面时,该page指令一般会自动生成。大家注意在自己修改时不要把contentType类型删除或者修改错误即可。
2 URL传递参数中文乱码的解决办法
一般情况下在使用get方法提交表单的时候传递的参数如果是中文的话很可能会出现乱码。在index.jsp页面中添加一条这样的语句:
请点击
你提交的参数为:<%=request.getParameter("param")%>
如果上面这个JSP程序是通过一个URL链接向自身传递一个参数,这个参数是中文字符串,对于URL传递中文参数乱码这个问题,其处理方法就是在页面添加一行Java代码,设置请求的字符编码类型 <%request.setCharacterEncoding("gbk");%>就可以了。
3 表单提交的中文乱码的解决办法
对于表单的数据可以使用String uName=request.getParameter(”Name”)的方法获取,但是当表单中出现中文数据的时候就会出现乱码。产生乱码的原因是服务器对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。对于这个问题可以采用转换编码格式的方法来解决,先将此变量转换成ISO-8859-1的编码格式,然后再强制转换成字符即可,改动如下:String uName=new String(request.getParameter(”Name”).getBytes("ISO-8859-1")) [2]
4 数据表中数据乱码的解决办法
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下: 在数据库连接字符串中加入编码字符集
String Url="jdbc:mysql://localhost/digitgulf?user=root
关键词:字符集;字符编码;乱码
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)32-7861-02
计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如’a’用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",在解码过程中,如果使用了错误的解码规则,则导致’a’解析成’b’或者乱码。[1]
现在大部分具有国际化特征的软件核心字符处理都是以 Unicode 为基础的。中文字符集有GB2312-80,GBK ,Java 程序无论是以字符流读/写文件,还是从 URL 连接读取参数值,都会有字符编码的转换。从理论上来说,这些根据字符集设置而进行的字符转换不应该产生太多问题。而事实是由于应用程序的实际运行环境不同,Unicode 和各个本地字符集的补充、完善,以及系统或应用程序实现的不规范,转码时出现的问题时时困扰着程序员。该文就显示中文时出现乱码的问题的解决办法作一个简单的介绍,希望能让大家从中受益。
1 JSP页面显示中文乱码的解决办法
在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。如果是在JSP页面中写入如下页面指令<%@ page language="java" import="java.util.*" %>,那么在该页面中如果要显示中文就一定会出现乱码,原因在于它没有在JSP中指定页面显示的编码,消除乱码的解决方案很简单,首先需要在建立了一个WEB项目后,把该项目的编码集先修改成GBK,这样可以减少很多有关显示中文乱码的问题。然后把page指令改为<%@ page language="java" import="java.util.*" contentType="text/html; charset=GBK" %> 即可。原理就是向页面指定编码为GBK,那么页面就会按照此编码来显示,于是乱码消失。在NetBeans下创建JSP页面时,该page指令一般会自动生成。大家注意在自己修改时不要把contentType类型删除或者修改错误即可。
2 URL传递参数中文乱码的解决办法
一般情况下在使用get方法提交表单的时候传递的参数如果是中文的话很可能会出现乱码。在index.jsp页面中添加一条这样的语句:
请点击
你提交的参数为:<%=request.getParameter("param")%>
如果上面这个JSP程序是通过一个URL链接向自身传递一个参数,这个参数是中文字符串,对于URL传递中文参数乱码这个问题,其处理方法就是在页面添加一行Java代码,设置请求的字符编码类型 <%request.setCharacterEncoding("gbk");%>就可以了。
3 表单提交的中文乱码的解决办法
对于表单的数据可以使用String uName=request.getParameter(”Name”)的方法获取,但是当表单中出现中文数据的时候就会出现乱码。产生乱码的原因是服务器对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。对于这个问题可以采用转换编码格式的方法来解决,先将此变量转换成ISO-8859-1的编码格式,然后再强制转换成字符即可,改动如下:String uName=new String(request.getParameter(”Name”).getBytes("ISO-8859-1")) [2]
4 数据表中数据乱码的解决办法
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下: 在数据库连接字符串中加入编码字符集
String Url="jdbc:mysql://localhost/digitgulf?user=root