试论JSP技术中文乱码的原因及解决方法
2016-07-06曹亮
曹亮
摘 要:JSP技术是动态网页制作的关键,也是现今主流的动态网页制作技术。在网页的设计和开发过程中,经常会出现一些中文乱码的问题,严重影响动态网页的开发和使用。所以本文先分析了常见的中文编码格式,然后从4个方面详细阐述了中文乱码的问题及解决方法。
关键词:JSP技术;中文乱码;原因;解决方法
由于在动态网页制作中,中文主要是利用特殊的字符编码方式,因此在网页制作中很容易产生乱码问题。利用JSP技术开发的WEB平台在任何一个操作系统之上都能使用,中文乱码会给设计人员造成很大的困扰。由此可见,解决中文乱码问题是JSP技术开发动态网页必须解决的重要问题。
1 常见编码格式
(1)ISO-8859-1编码,也称之为Latin-1编码。ASCII 编码的128个字符显然是不够用的,因此ISO组织在此基础上进行了拓展,从 ISO-8859-1到ISO-8859-15,应用最广泛的是ISO-8859-1,主要因为ISO-8859-1是单字节编码。
(2)Unicode编码。Unicode是目前最统一的编码格式,但是它却不兼容其他任何编码格式。另外,通常所说的UTF-16,就是Unicode字符在计算机中存取的方法。
(3)GBK编码。它是GB2312的拓展,总共含有23 940 个码位,能表示21 003个汉字,并且它与 GB2312编码格式兼容。
(4)UTF-8。它的主要原理是通过变长技术,使不同类型的字符能够由1~6个字节组成。
2 乱码问题及解决对策
中文乱码问题一般会出现两种情况:一是在HTML中,二是在JSP动态输出中。造成中文乱码的原因有多种,只有深入分析找到乱码的位置和原因,才能解决问题,提高动态网页制作效率。
2.1 页面乱码问题
如果在进行程序调试时,在显示界面该出现中文的地方,显示的是字符或问号。对这种情况的解决方案是,在jsp页面的头部加入以下代码<%pagecontentType=”text/html;charset=gb2312”%>,如下列的程序:
<%@ page language=”java” import=”java.util.*” %>
这是一个中文显示示例:
<%
String str = “中文”;
out.print(str);
%>
经过浏览器显示之后,本该出现中文显示示例的中文字符,结果却显示了“? ? ? ?? ? ???? ? ?”这种符号,在处理这种中文乱码问题时,可以将jsp头部改成<%@ page language=”java”import=”java.util.*”contentType=”text/html;charset=GB2312” %> 这样中文汉字即可正常显示。
2.2 参数传递时出现乱码问题
参数传递时出现乱码问题,只要在传递参数时,进行编码转换就可以解决。具体代码为<%String str=newString(request.getParameter(“str”).getBytes(“iso-8859-1”),”gb2312”);%>。
如下列程序:
<%@ page language=”java” import=”java.util.*” contentType=”text/html;charset=gb2312”%>
<%
String param = request.getParameter(“param”);
%>
你提交的参数为:<%=param%>
在程序运行之后,有时会显示提交的参数为???。这种乱码在动态网页的设计开发中经常会发生。其解决方法是,在原来代码中添加URI编码设置URIEncoding=“gb2312”。这样在进行程序运行之后,就能够显示正常的参数。
2.3 表单乱码问题
表单问题产生的主要原因是提交表单的方法程序并不支持中文字符,通常默认的编码格式是ISO-8859-1。一般解决这种问题的方法是,在页面中或是sevlet中以及在过滤时进行解决,如设置 request 和 response 的编码(页面编码必须为 u8),或者是添加
属性。无论是采用哪种解决方法,都需要程序员根据实际的程序来选择。2.4 浏览器不识别问题
浏览器不识别问题的主要表现就是在提交中文字符时出现乱码问题,而提交英文字符时则显示正常。产生这种问题的主要原因是浏览器默认的编码格式和程序编码格式不兼容,浏览器无法识别中文字符。解决这种问题只须通过request.setCharacterEncoding(“gb2312”)对请求进行统一编码即可。这样经过编码格式的统一之后,中文字符就会正常显示。
3 总结
综上所述,中文乱码产生的主要原因是编码格式的不统一,并且编码格式之间基本不兼容。另外,在处理中文乱码问题时,找到乱码问题的原因是解决问题的关键。由此可见,深入了解JSP技术是非常有必要的。
参考文献
[1]徐珊.JSP技术中的中文乱码成因与对策探析[J].山东工业技术,2015,(19):220.
[2]梅锦峰,阳小兰,钱程,等.JSP初学者遇到的中文乱码问题及解决方案[J].黑龙江科技信息,2016,(4):180.
(作者单位:哈尔滨市南岗房产经营物业管理有限责任公司第一分公司)