|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。j2ee|办理|成绩|中文Java中文成绩一向困扰着良多初学者,假如懂得了Java体系的中文成绩道理,我们就能够对中文成绩可以接纳基本的办理之道。最陈旧的办理计划是利用String的字节码转换,这类计划成绩是不便利,我们必要损坏对象封装性,举行字节码转换。
另有一种体例是对J2EE容器举行编码设置,假如J2EE使用体系离开该容器,则会产生乱码,并且指定容器设置不切合J2EE使用和容器分别的准绳。
在Java外部运算中,触及到的一切字符串城市被转化为UTF-8编码来举行运算。那末,在被Java转化之前,字符串是甚么样的字符集?Java老是依据操纵体系的默许编码字符集来决意字符串的初始编码,并且Java体系的输出和输入的都是接纳操纵体系的默许编码。
因而,假如能一致Java体系的输出、输入和操纵体系3者的编码字符汇合,将可以使Java体系准确处置和显现汉字。这是处置Java体系汉字的一个准绳,可是在实践项目中,可以准确捉住和把持住Java体系的输出和输入部分是对照难的。J2EE中,因为触及到内部扫瞄器和数据库等,以是中文成绩乱码显得十分凸起。
J2EE使用程序是运转在J2EE容器中。在这个体系中,输出路子有良多种:一种是经由过程页面表单打包成哀求(request)发往服务器的;第二种是经由过程数据库读进;另有第3种输出对照庞大,JSP在第一次运转时老是被编译成Servlet,JSP中经常包括中笔墨符,那末编译利用javac时,Java将依据默许的操纵体系编码作为初始编码。除非出格指定,如在Jbuilder/eclipse中能够指定默许的字符集。
输入路子也有几种:第一种是JSP页面的输入。因为JSP页面已被编译成Servlet,那末在输入时,也将依据操纵体系的默许编码来选择输入编码,除非指定输入编码体例;另有输入路子是数据库,将字符串输入到数据库。
由此看来,一个J2EE体系的输出输入长短常庞大,并且是静态变更的,而Java是跨平台运转的,在实践编译和运转中,都大概触及到分歧的操纵体系,假如任由Java自在依据操纵体系来决意输出输入的编码字符集,这将不成把持地呈现乱码。
恰是因为Java的跨平台特征,使得字符集成绩必需由详细体系来一致办理,以是在一个Java使用体系中,办理中文乱码的基本举措是明白指定全部使用体系一致字符集。
指定一致字符集时,究竟是指定ISO8859_1、GBK仍是UTF-8呢?
(1)如一致指定为ISO8859_1,由于今朝年夜多半软件都是东方人体例的,他们默许的字符集就是ISO8859_1,包含操纵体系Linux和数据库MySQL等。如许,假如指定Jive一致编码为ISO8859_1,那末就有上面3个环节必需掌控:
开辟和编译代码时指定字符集为ISO8859_1。
运转操纵体系的默许编码必需是ISO8859_1,如Linux。
在JSP头部声明:。
(2)假如一致指定为GBK中笔墨符集,上述3个环节一样必要做到,分歧的是只能运转在默许编码为GBK的操纵体系,如中文Windows。
一致编码为ISO8859_1和GBK固然带来体例代码的便利,可是各自只能在响应的操纵体系上运转。可是也损坏了Java跨平台运转的优胜性,只在必定局限熟行得通。比方,为了使得GBK编码在linux上运转,设置Linux编码为GBK。
那末有无一种除使用体系之外不必要举行任何附加设置的中文编码基本办理计划呢?
将Java/J2EE体系的一致编码界说为UTF-8。UTF-8编码是一种兼容一切言语的编码体例,唯一对照贫苦的就是要找到使用体系的一切收支口,然后利用UTF-8往“结扎”它。
一个J2EE使用体系必要做以下几步事情:
开辟和编译代码时指定字符集为UTF-8。JBuilder和Eclipse都能够在项目属性中设置。
利用过滤器,假如一切哀求都经由一个Servlet把持分派器,那末利用Servlet的filter实行语句,将一切来自扫瞄器的哀求(request)转换为UTF-8,由于扫瞄器发过去的哀求包依据扫瞄器地点的操纵体系编码,多是各类情势编码。关头一句:
request.setCharacterEncoding("UTF-8")。
网上有此filter的源码,Jdon框架源码中com.jdon.util.SetCharacterEncodingFilter
必要设置web.xml激该死Filter。
在JSP头部声明:。
在Jsp的html代码中,声明UTF-8:
设定命据库毗连体例是UTF-8。比方毗连MYSQL时设置URL以下:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
一样平常数据库都能够经由过程办理设置设定UTF-8
其他和外界交互时可以设定编码时就设定UTF-8,比方读取文件,操纵XML等。
笔者之前在Jsp/Servlet时就接纳这个准绳,厥后利用Struts、Tapestry、EJB、Hibernate、Jdon等框架时,从未被乱码困扰过,能够说合适各类架构。但愿本计划供更多初学者分享,削减Java/J2EE的第一个拦路虎,也制止由于接纳一些一时办理计划,招致中文成绩一向呈现在新的手艺架构中。
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 |
|