测试环境:
操作系统: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修改过]