《JSP页面中文乱码解决方法》由会员分享,可在线阅读,更多相关《JSP页面中文乱码解决方法(6页珍藏版)》请在金锄头文库上搜索。
1、 JSP页面中文乱码解决方法 任宪臻+梁宏英Summary:在Java Web应用开发过程中,显示中文信息页面时经常出现乱码问题。出现中文乱码问题的根本主要在于字符编码,大部分乱码是因页面编码不一致引起。笔者根据实际应用开发中遇到的问题,对基于Eclipse Java EE IDE for Web Developers(以下简称Eclipse EE)+Tomcat8.0开发中遇到的JSP中文乱码问题,总结提出了一种行之有效的解决办法,可以有效地解决JSP中文乱码问题。Key:字符集;字符编码;中文乱码:TP31 :A :1007-9416(2017)01-0154-01在Java Web应用开
2、发中,JSP页面显示中文信息乱码一般表现为:JSP编码乱码、HTML编码乱码、request获取数据乱码、response输出信息乱码等,本文主要针对出现的这些乱码问题,提出一种行之有效的解决中文显示乱码的方法。1 字符集与字符编码字符是各種文字和符号的总称,包括各个国家的文字、标点符号、图形符号、数字等,而字符集是多个字符的集合。字符集种类较多,常见字符集有ASCII字符集、GB2312字符集、GBK字符集、GB18030字符集、Unicode字符集等。计算机要处理各种字符集中的字符,首先需要对字符进行编码,以便计算机能够识别、存储各种字符。所谓字符编码,是指以二进制数字对应字符集中的字符,
3、即规定每个字符分别用一个字节还是多个字节存储、用哪些字节存储等。因此,对字符进行编码是信息交流的技术基础。字符编码和字符集不同,一种字符集可以有一种或多种字符编码,如Unicode字符集有多种编码方式,如UTF-8、UTF-16、UTF-32等。2 在Eclipse EE下更改默认字符集编码为了使开发的Java Web应用能够具有更好的国际化支持、能够最大程度地支持中文输出,在Eclipse EE下编写文件最好使用UTF-8编码。在Eclipse EE下修改默认字符集编码的方法如下:(1)依次单击Window-Preferences-General-Wordspace,在右侧的Text fil
4、e encoding处,勾选other选项,选择UTF-8。(2)依次单击Window- Preferences -Web-CSS Files/HTML Files/JSP Files(每次选择一种类型的文件设置),在右侧的Encoding处,选择“ISO 10646/Unicode(UTF-8)”。(3)完成以上操作,单击“OK”按钮保存设置。至此,文件编码设置完毕。3 修改Tomcat8.0的server.xml文件在tomcat8.0安装目录下的conf目录中,有一个名为server.xml的文件,该文件主要用于对整个容器进行相关的配置。在server.xml文件中,被称为连接器的元素主
5、要负责接收客户的请求,以及向客户端回送响应的消息。元素有一个URIEncoding属性,该属性用于指定Tomcat服务器解码URL的字符编码。在Tomcat8.0中,如果没有显式指定URIEncoding属性的值,则使用其默认值UTF-8(若系统属性org.apache.catalina.STRICT_SERVLET_COMPLIANCE的被设置为true,则URIEncoding属性的默认值为ISO-8859-1)。为了避免中文显示乱码,可以为元素的URIEncoding属性显示指定值为“UTF-8”,这样就明确指定Tomcat8服务器用“UTF-8”对URL进行解码,添加代码如下:指定UR
6、IEncoding=UTF-8后,如果请求的URL里面的参数也是使用UTF-8编码,那么即使URL请求的参数中包含了中文字符,在客户端显示中文也不会出现乱码,但是如果URL里面的参数不是使用UTF-8编码(如使用GBK编码),此时因为请求URL的编码与Tomcat解码应用的编码不一致,如果客户端未对接收的信息进行正确的编码转换,可能就会发生中文显示乱码问题。因此,为了避免乱码,请求URL的编码方式尽量要与tomcat的解码方式保持一致。但是麻烦的是,没有规范明确指定URL采用的具体的编码方法,而是交给应用程序(浏览器)自己决定,这就导致“URL编码”成为了一个混乱的领域。目前很多浏览器使用UT
7、F-8作为URL的默认编码,也有浏览器使用“ISO-8859-1”编码URL,或者使用当前页面的编码。为了使请求URL的编码方式与Tomcat服务器的解码方式保持一致,可以指定浏览器发送请求信息时的编码,如在IE11中,可以指定以UTF-8编码发送URL路径,如图1所示。4 编码设置总结经过上述设置,JSP中文乱码问题基本可以得到解决,但是有以下几点在实际应用中还需要注意:(1)Tomcat配置文件Server.xml中URIEncoding=UTF-8 设置只对get类型的请求有效,对post请求类型无效。所以即使配置了URIEncoding=UTF-8,在服务器端接收到的post类型的请求
8、参数编码仍然为“ISO-8859-1”,而不是“UTF-8”。(2)使用post请求时,为了避免中文乱码显示,可以在获取请求参数值前,首先设置request对象和response对象的字符编码。(3)如果JSP程序中使用了Java Bean的属性设置语句,那么上述2)中的字符编码设置一定要放置在Java Bean属性设置之前。Reference1宋智军,邱仲潘.JSP从入门到精通.电子工业出版社,2012.2何福贵,张海,张力展,著.JSP开发案例教程.机械工业出版社,2013.3耿祥义,张跃平.JSP基础教程.清华大学出版社,2009. 数字技术与应用2017年1期数字技术与应用的其它文章大型国企网络安全风险及防范对策电子技术在智能电网中的应用基于北斗AIS通信系统的海上搜救终端方案基于SolidWorks的台虎钳口的改造分析SQLServer2000到Oracle11G存储过程转换技术探究试析VLAN技术在网络工程中的应用 -全文完-