当前位置: 技术问答>java相关
请教有关Servlet对中文的处理?本论坛提及的方法我都试过了,但不能彻底解决!
来源: 互联网 发布时间:2015-01-11
本文导语: 在Java Servlet中处理中文字符问题多多,在我的机上(JDK均为1.3.0-C,win2k平台)不同的环境下(JBuilder4、Tomcat3.2、 Tomcat4.0m2)结果都不同!请问有谁处理过这方面的问题。一般采用那种处理方法? 我说一下我在Tomcat4...
在Java Servlet中处理中文字符问题多多,在我的机上(JDK均为1.3.0-C,win2k平台)不同的环境下(JBuilder4、Tomcat3.2、
Tomcat4.0m2)结果都不同!请问有谁处理过这方面的问题。一般采用那种处理方法?
我说一下我在Tomcat4中遇到的情况:
1。设定 CONTENT_TYPE="text/html;chatset=gb2312" 时 ,用out.println()输出的中文正常显示。
通过post方式提交Form表单数据时,在浏览器、送入数据库均正常;
而通过get方式提交表单数据或URL形式传递参数(如:http://www.XX.com/servlet/GetFormInfo?user_id=XXX)时,
在浏览器、数据库里的信息都变成"?" 。
2. 设定 CONTEVT_TYPE="text/html" 时,out.println() 输出的中文全变成" ?" !
而此时通过post方式提交的表单数据在浏览器中乱码"?" ,但送入数据库的信息却是正确的;
而通过get方式或URL形式传递参数时,在浏览器正常显示中文,但送入数据库的信息全变成"?" !!
在JBuilder4、Tomcat3.2中情况有些就刚好反过来了,总有不同的结果,天呀!有没有一种最终解决方案呢?
之所以产生这些问题,估计是Java对Unicode、GB2312字符码的处理有缺陷,参考网上的资料,都没有最终解决办法。
Tomcat4.0m2)结果都不同!请问有谁处理过这方面的问题。一般采用那种处理方法?
我说一下我在Tomcat4中遇到的情况:
1。设定 CONTENT_TYPE="text/html;chatset=gb2312" 时 ,用out.println()输出的中文正常显示。
通过post方式提交Form表单数据时,在浏览器、送入数据库均正常;
而通过get方式提交表单数据或URL形式传递参数(如:http://www.XX.com/servlet/GetFormInfo?user_id=XXX)时,
在浏览器、数据库里的信息都变成"?" 。
2. 设定 CONTEVT_TYPE="text/html" 时,out.println() 输出的中文全变成" ?" !
而此时通过post方式提交的表单数据在浏览器中乱码"?" ,但送入数据库的信息却是正确的;
而通过get方式或URL形式传递参数时,在浏览器正常显示中文,但送入数据库的信息全变成"?" !!
在JBuilder4、Tomcat3.2中情况有些就刚好反过来了,总有不同的结果,天呀!有没有一种最终解决方案呢?
之所以产生这些问题,估计是Java对Unicode、GB2312字符码的处理有缺陷,参考网上的资料,都没有最终解决办法。
|
to ouxing(星星):
用URLDecoder.decode(String s)将取出的参数字符串转换一下。
URLDecoder.decode(String s)
Decodes a "x-www-form-urlencoded" to a String.
URLEncoder.encode(String s)
Translates a string into x-www-form-urlencoded format.
用URLDecoder.decode(String s)将取出的参数字符串转换一下。
URLDecoder.decode(String s)
Decodes a "x-www-form-urlencoded" to a String.
URLEncoder.encode(String s)
Translates a string into x-www-form-urlencoded format.
|
首先,你的web server要支持中文,也就是说在tomcat的配置文件中你要设定他支持中文字符集(我想是这样的,因为我用的resin在设定之前和你的现象一样)。如果你的tomcat不支持中文,你就需要将你get上来的request转化成unicode再使用,就可以解决你的问题了,如有问题请再提问!