首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

再论Tomcat和STRUTS中的中文有关问题

2012-10-30 
再论Tomcat和STRUTS中的中文问题Tomcat中开发WEB程序的中文问题困扰了许多人,网上也有大量讨论解决的方法。

再论Tomcat和STRUTS中的中文问题
   Tomcat中开发WEB程序的中文问题困扰了许多人,网上也有大量讨论解决的方法。本文也准备在此讨论一下这个问题。
  中文问题有两个方面:

(1)中文的显示问题

   JSP页面:
   这个问题只需要在JSP页面中设定如下指令就可以解决:
  



  对于支持中文编码的具体选择,很多文章推荐利用GBK,这个当然可以,不过,利用UTF-8要更好一些,因为现在Java类库中为了能够适应国际化的需要,许多字符都是采用UTF-8进行的编码,所以,推荐采用UTF-8。

   另外一点需要注意的是,在存储JSP或HTML文件时,一定要保证存储文件的编码格式要与声明的中文编码的格式相同,否则的话会由于文件的实际编码和声明的编码不一至产生乱码。大部分的专业开发工具,比如MyEclipse、Netbeans等等,都会按照文件中声明的编码格式自动存储文件,所以不会有什么问题。但是,如果利用一些简单的工具,比如Windows的记事本,它不会自动按照声明的格式存储文件。在大部分情况下,文件会按照Windows系统默认的编码格式进行存储,即GBK编码。如果声明了UTF-8,这时反而会出现乱码。不过,记事本也支持不同的文本存储编码,只是需要手工指定:使用"文件"->"另存为"菜单,在文件存储对话框最后的“编码”框中选择UTF-8就可以了。

(2)中文参数的接收和传递问题
 
  在WEB中除去要显示中文信息之外,中文信息的接受和传递也是必不可少的。在WEB程序中,用户输入的数据和程序交互的主要方式就是利用HTTP协议的GET方法或POST方法,而用户的数据往往是由浏览器传递给Tomcat,Tomcat再交给WEB程序来处理这些数据。

   鉴于这个过程,要保证正确的中文信息接受和传递,首先要保证浏览器中的传递过来的数据要正确,所以,在显示用户界面时,应该要保证在JSP或HTML中设定了正确的字符编码。其实,只要按照问题(1)中的设定,一般都不会有问题。

   接下来就是程序中接受中文,此时问题稍稍有些复杂,这是由于在Tomcat不同的版本中,处理GET协议和POST协议的有不同方式造成的。

  (A)Tomcat4.x
   对于Tomcat4.x版本,它采用相同的方式处理HTTP协议中的get和set方法,所以,要处理这个问题,只需要在WEB程序中接受request参数时,在取出参数之前,在JSP的页面或Servlet的doGet(或doPost)利用如下代码就可以解决中文参数的获取问题:
    String p1=request.getParameter("p1");  

  对于STRUTS,也可以直接使用它在Formbean中存储的表单数据了。 1 楼 aaronfeng 2007-08-01   total test 2 楼 gazhangting 2008-01-18   (3)对于Tomcat5.x,在上述步骤的基础上,只要修改安装目录中的config/server.xml,添加参数URIEncoding,将其设置为UTF-8。

你说只要这个地方设置与页面上统一,就可以了,我发现我把这个地方改成了,UTF-8能后页面上是gbk,也没有什么问题.这个地方,还是不理解. 3 楼 dwangel 2008-01-19   gazhangting 写道(3)对于Tomcat5.x,在上述步骤的基础上,只要修改安装目录中的config/server.xml,添加参数URIEncoding,将其设置为UTF-8。

你说只要这个地方设置与页面上统一,就可以了,我发现我把这个地方改成了,UTF-8能后页面上是gbk,也没有什么问题.这个地方,还是不理解.
URIEncoding影响的是tomcat如何解释get方式通过url传递的参数,post的是另外的。

显示跟接受时解码没关系. 4 楼 galaxystar 2008-01-19   server.xml
useBodyEncodingForURI="true"
这个参数扩展性更好,表示以页面的编码作为request默认编码.

热点排行