疑惑:java中文问题在各种测试中的结果

07-01-16 jdonnew
    

测试环境:

操作系统:XP / Java JDK:1.4.2 / Tomcat 4.0

运行方式:

前台:HTML,通过AJAX技术调用Servlet,url中带中文参数;

后台:Servlet类,接收中文参数进行编码转换,再输出到前台。(为测试:后台也System.out.println()出来)

第一种:GET方式传递参数

var url = "PostServlet?title=中文get";

WEB容器默认采用ISO-8859-1编码格式接受传入的值。

1,若在Servlet中设置:response.setContentType("text/html; charset=GBK");按GBK编码发送到客户端,则不会乱码。

2,若没有上面一句,默认按ISO-8859-1编码发送到客户端,则乱码。

3,后台System.out.println()若要输出中文,则需要手工代码将ISO编码转换为GBK编码。

第二种:POST方式传递参数

var url = PostServlet";

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); //xmlHttp为XMLHttpRequest对象,具体声明定义略

xmlHttp.send("title=中文post");

这里就有一个问题,WEB容器是以什么编码格式接受传入的值的呢?

因为遇到问题只能先给出测试结果。

1,若在Servlet中设置:response.setContentType("text/html; charset=GBK");客户端乱码。

2,若没有上面一句,客户端不会乱码。(与GET方式刚好相反)

3,后台System.out.println()若要输出中文,则需要手工代码将ISO编码转换为UTF-8编码。

希望得到高手指点哦,先谢。。

[该贴被jdonnew于2007-01-17 13:44修改过]

    

chabulier
2007-01-17 17:26

如果没有记错,默认的tomcat编码是ISO-8859-1

如果不修改容器属性,一般是需要自己转码的,一般使用filter来实现。

wcj1981
2007-01-17 21:46

编码的问题很是头痛的问题,而且我发现var url = "PostServlet?title=中文get";这种参数后面跟中文的时候好象有bug,真是受不了,有的错误出的都是莫名其妙,尤其是和数据库连起来的时候更是....