蔡群英 黄镇建
摘要:在J2EE教学中,学生在项目开发过程中经常会碰到中文乱码,该文从web的工作原理,各个阶段涉及到的编码,以及如何进行编码设置展开论述,以解答学生的困惑。
关键词:J2EE;中文乱码;编码
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)17-4067-02
Solution about Chinese Disorderly Code in J2EE teaching
CAI Qun-ying1, HUANG Zhen-jian2
(1.Computer Science andEngineeringDepartmentof Hanshan Normal University, Chaozhou 521000, China; 2.Physics and Electronic Engineering Department of Hanshan Normal University, Chaozhou 521000, China)
Abstract: In J2EE teaching,students often encounter Chinese disorderlycode in their project developement.This paper describes the working principle of Web,and character encoding in all stages,and how to encode,to answer the confusion of students.
Key words: J2EE; Chinesedisorderlycode; characterencoding
1 概述
在J2EE教学中,学生在项目开发过程经常会碰到中文乱码的问题,比如他们编写的表单,提交到服务器,执行后返回的页面有些中文能正常显示,而有些却出现乱码。这样的问题使他们感到很困惑,对编码的设置感到很混乱。该文从web的工作原理,各个阶段涉及到的编码,以及如何进行编码设置进行论述。该文所讨论的环境是Winxp,Jdk1.6,Tomcat6.0,Myeclipse6.0。
2 Web的工作原理
在J2EE应用系统中,包括客户端、web服务器和数据库。在客户端浏览器默认的编码是utf-8[1],web服务器(tomcat)默认的编码是ISO-8859-1,数据库的编码默认是latin-1,在安装时可以进行修改。Web的工作原理如图1所示[2]:客户端通过浏览器的地址栏发送一个请求,服务器端接收请求,执行代码,如果涉及到数据库,就访问数据库,执行结果再通过web服务器以html的形式返回给客户端。
在这个过程中,数据的传送需要request和response对象,表单中的数据通过request对象封装发送给服务器端,所以可以通过request.getParameter(“”)来取得表单元素的值,服务器端返回数据给客户端要通过response对象。
3 中文乱码的解决办法
3.1 静态内容的编码
一个jsp页面包含有静态的内容和动态的内容,静态内容的编码通过jsp文件头语句来设置,这样就保证了页面中静态内容的正常显示。
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
3.2 表单元素的编码
如果页面中涉及到表单,那么就要在处理表单的程序中设置提交到服务器的内容的编码是GB2312,使用<%request.setCharacterEncoding(“GB2312”);%>,这个语句要放在程序的开头。这种方式最方便,它对整个表单的内容都进行设置。
也可以采用单独设置各个表单元素的方式来进行,但如果要处理的表单元素比较多的话,就显得较繁琐,例如注册页面register.jsp中有usesrname的元素,要设置它的编码,是在do_register.jsp中通过下面的语句来设置的。
String username=request.getParameter(“username”); //username的编码是ISO-8859-1
String username=new String(username.getBytes(“ISO-8859-1”),”GB2312”); //转换为GB2312
3.3 整个项目的编码
对于一个项目,如果涉及的中文编码太多的话,那么就要采用过滤器来设置,编写一个编码过滤器来对项目中所有页面的编码进行统一设置。
过滤器是位于请求与响应中间的起过滤功能的程序,过滤器能够拦截请求或响应信息,并对其进行过滤处理[4]。过滤器处理请求和响应的过程如图2所示:
正是由于这一特性,我们可以用它来进行编码转换。编写的过滤器代码如下:
还要在web.xml文件中对过滤器进行配置。
3.4数据库的编码
在数据库这个环节,也要进行编码的设置,mysql默认的设置是拉丁文latin1,如果不设置,在页面中显示查询到的记录就会出现乱码。
在数据库安装目录中的my.ini,这是MySQL Server实例配置文件,设置其中的几项:
这种方法非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为GB2312,创建新表格的时候无需再次设置。
同时,还要保证页面的编码已被设置为GB2312,如没有设置,就要增加这一行代码。
如果只是要设置某个数据库的编码,那么可以找到这个数据库的db.opt文件,进行单独的设置。如图3所示。
4 总结
本文没有深入地研究各种编码以及中文乱码出现的原因,但将学生在J2EE项目开发过程中出现中文乱码的问题给出各种解决方案,学生可以根据需要从中选择解决的办法,从而使得项目的开发能够顺利进行。
参考文献:
[1] 任平红,陈矗,郑秋梅.Java中文乱码问题研究[J].计算机技术与发展,2013(3):117-120.
[2] 郭克华,李敏,陈志刚.Java Web程序设计[M].北京:清华大学出版社,2011.
[3] 李德平.对Java Web应用开发中的中文乱码问题的研究与解决[J].计算机与数字工程,2012(12):126-129.
[4] 杨树林,胡洁萍.Java EE企业级架构开发技术与案例教程[M].北京:机械工业出版社,2011.1.endprint
摘要:在J2EE教学中,学生在项目开发过程中经常会碰到中文乱码,该文从web的工作原理,各个阶段涉及到的编码,以及如何进行编码设置展开论述,以解答学生的困惑。
关键词:J2EE;中文乱码;编码
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)17-4067-02
Solution about Chinese Disorderly Code in J2EE teaching
CAI Qun-ying1, HUANG Zhen-jian2
(1.Computer Science andEngineeringDepartmentof Hanshan Normal University, Chaozhou 521000, China; 2.Physics and Electronic Engineering Department of Hanshan Normal University, Chaozhou 521000, China)
Abstract: In J2EE teaching,students often encounter Chinese disorderlycode in their project developement.This paper describes the working principle of Web,and character encoding in all stages,and how to encode,to answer the confusion of students.
Key words: J2EE; Chinesedisorderlycode; characterencoding
1 概述
在J2EE教学中,学生在项目开发过程经常会碰到中文乱码的问题,比如他们编写的表单,提交到服务器,执行后返回的页面有些中文能正常显示,而有些却出现乱码。这样的问题使他们感到很困惑,对编码的设置感到很混乱。该文从web的工作原理,各个阶段涉及到的编码,以及如何进行编码设置进行论述。该文所讨论的环境是Winxp,Jdk1.6,Tomcat6.0,Myeclipse6.0。
2 Web的工作原理
在J2EE应用系统中,包括客户端、web服务器和数据库。在客户端浏览器默认的编码是utf-8[1],web服务器(tomcat)默认的编码是ISO-8859-1,数据库的编码默认是latin-1,在安装时可以进行修改。Web的工作原理如图1所示[2]:客户端通过浏览器的地址栏发送一个请求,服务器端接收请求,执行代码,如果涉及到数据库,就访问数据库,执行结果再通过web服务器以html的形式返回给客户端。
在这个过程中,数据的传送需要request和response对象,表单中的数据通过request对象封装发送给服务器端,所以可以通过request.getParameter(“”)来取得表单元素的值,服务器端返回数据给客户端要通过response对象。
3 中文乱码的解决办法
3.1 静态内容的编码
一个jsp页面包含有静态的内容和动态的内容,静态内容的编码通过jsp文件头语句来设置,这样就保证了页面中静态内容的正常显示。
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
3.2 表单元素的编码
如果页面中涉及到表单,那么就要在处理表单的程序中设置提交到服务器的内容的编码是GB2312,使用<%request.setCharacterEncoding(“GB2312”);%>,这个语句要放在程序的开头。这种方式最方便,它对整个表单的内容都进行设置。
也可以采用单独设置各个表单元素的方式来进行,但如果要处理的表单元素比较多的话,就显得较繁琐,例如注册页面register.jsp中有usesrname的元素,要设置它的编码,是在do_register.jsp中通过下面的语句来设置的。
String username=request.getParameter(“username”); //username的编码是ISO-8859-1
String username=new String(username.getBytes(“ISO-8859-1”),”GB2312”); //转换为GB2312
3.3 整个项目的编码
对于一个项目,如果涉及的中文编码太多的话,那么就要采用过滤器来设置,编写一个编码过滤器来对项目中所有页面的编码进行统一设置。
过滤器是位于请求与响应中间的起过滤功能的程序,过滤器能够拦截请求或响应信息,并对其进行过滤处理[4]。过滤器处理请求和响应的过程如图2所示:
正是由于这一特性,我们可以用它来进行编码转换。编写的过滤器代码如下:
还要在web.xml文件中对过滤器进行配置。
3.4数据库的编码
在数据库这个环节,也要进行编码的设置,mysql默认的设置是拉丁文latin1,如果不设置,在页面中显示查询到的记录就会出现乱码。
在数据库安装目录中的my.ini,这是MySQL Server实例配置文件,设置其中的几项:
这种方法非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为GB2312,创建新表格的时候无需再次设置。
同时,还要保证页面的编码已被设置为GB2312,如没有设置,就要增加这一行代码。
如果只是要设置某个数据库的编码,那么可以找到这个数据库的db.opt文件,进行单独的设置。如图3所示。
4 总结
本文没有深入地研究各种编码以及中文乱码出现的原因,但将学生在J2EE项目开发过程中出现中文乱码的问题给出各种解决方案,学生可以根据需要从中选择解决的办法,从而使得项目的开发能够顺利进行。
参考文献:
[1] 任平红,陈矗,郑秋梅.Java中文乱码问题研究[J].计算机技术与发展,2013(3):117-120.
[2] 郭克华,李敏,陈志刚.Java Web程序设计[M].北京:清华大学出版社,2011.
[3] 李德平.对Java Web应用开发中的中文乱码问题的研究与解决[J].计算机与数字工程,2012(12):126-129.
[4] 杨树林,胡洁萍.Java EE企业级架构开发技术与案例教程[M].北京:机械工业出版社,2011.1.endprint
摘要:在J2EE教学中,学生在项目开发过程中经常会碰到中文乱码,该文从web的工作原理,各个阶段涉及到的编码,以及如何进行编码设置展开论述,以解答学生的困惑。
关键词:J2EE;中文乱码;编码
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)17-4067-02
Solution about Chinese Disorderly Code in J2EE teaching
CAI Qun-ying1, HUANG Zhen-jian2
(1.Computer Science andEngineeringDepartmentof Hanshan Normal University, Chaozhou 521000, China; 2.Physics and Electronic Engineering Department of Hanshan Normal University, Chaozhou 521000, China)
Abstract: In J2EE teaching,students often encounter Chinese disorderlycode in their project developement.This paper describes the working principle of Web,and character encoding in all stages,and how to encode,to answer the confusion of students.
Key words: J2EE; Chinesedisorderlycode; characterencoding
1 概述
在J2EE教学中,学生在项目开发过程经常会碰到中文乱码的问题,比如他们编写的表单,提交到服务器,执行后返回的页面有些中文能正常显示,而有些却出现乱码。这样的问题使他们感到很困惑,对编码的设置感到很混乱。该文从web的工作原理,各个阶段涉及到的编码,以及如何进行编码设置进行论述。该文所讨论的环境是Winxp,Jdk1.6,Tomcat6.0,Myeclipse6.0。
2 Web的工作原理
在J2EE应用系统中,包括客户端、web服务器和数据库。在客户端浏览器默认的编码是utf-8[1],web服务器(tomcat)默认的编码是ISO-8859-1,数据库的编码默认是latin-1,在安装时可以进行修改。Web的工作原理如图1所示[2]:客户端通过浏览器的地址栏发送一个请求,服务器端接收请求,执行代码,如果涉及到数据库,就访问数据库,执行结果再通过web服务器以html的形式返回给客户端。
在这个过程中,数据的传送需要request和response对象,表单中的数据通过request对象封装发送给服务器端,所以可以通过request.getParameter(“”)来取得表单元素的值,服务器端返回数据给客户端要通过response对象。
3 中文乱码的解决办法
3.1 静态内容的编码
一个jsp页面包含有静态的内容和动态的内容,静态内容的编码通过jsp文件头语句来设置,这样就保证了页面中静态内容的正常显示。
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
3.2 表单元素的编码
如果页面中涉及到表单,那么就要在处理表单的程序中设置提交到服务器的内容的编码是GB2312,使用<%request.setCharacterEncoding(“GB2312”);%>,这个语句要放在程序的开头。这种方式最方便,它对整个表单的内容都进行设置。
也可以采用单独设置各个表单元素的方式来进行,但如果要处理的表单元素比较多的话,就显得较繁琐,例如注册页面register.jsp中有usesrname的元素,要设置它的编码,是在do_register.jsp中通过下面的语句来设置的。
String username=request.getParameter(“username”); //username的编码是ISO-8859-1
String username=new String(username.getBytes(“ISO-8859-1”),”GB2312”); //转换为GB2312
3.3 整个项目的编码
对于一个项目,如果涉及的中文编码太多的话,那么就要采用过滤器来设置,编写一个编码过滤器来对项目中所有页面的编码进行统一设置。
过滤器是位于请求与响应中间的起过滤功能的程序,过滤器能够拦截请求或响应信息,并对其进行过滤处理[4]。过滤器处理请求和响应的过程如图2所示:
正是由于这一特性,我们可以用它来进行编码转换。编写的过滤器代码如下:
还要在web.xml文件中对过滤器进行配置。
3.4数据库的编码
在数据库这个环节,也要进行编码的设置,mysql默认的设置是拉丁文latin1,如果不设置,在页面中显示查询到的记录就会出现乱码。
在数据库安装目录中的my.ini,这是MySQL Server实例配置文件,设置其中的几项:
这种方法非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为GB2312,创建新表格的时候无需再次设置。
同时,还要保证页面的编码已被设置为GB2312,如没有设置,就要增加这一行代码。
如果只是要设置某个数据库的编码,那么可以找到这个数据库的db.opt文件,进行单独的设置。如图3所示。
4 总结
本文没有深入地研究各种编码以及中文乱码出现的原因,但将学生在J2EE项目开发过程中出现中文乱码的问题给出各种解决方案,学生可以根据需要从中选择解决的办法,从而使得项目的开发能够顺利进行。
参考文献:
[1] 任平红,陈矗,郑秋梅.Java中文乱码问题研究[J].计算机技术与发展,2013(3):117-120.
[2] 郭克华,李敏,陈志刚.Java Web程序设计[M].北京:清华大学出版社,2011.
[3] 李德平.对Java Web应用开发中的中文乱码问题的研究与解决[J].计算机与数字工程,2012(12):126-129.
[4] 杨树林,胡洁萍.Java EE企业级架构开发技术与案例教程[M].北京:机械工业出版社,2011.1.endprint