黑马程序员技术交流社区
标题:
编码问题,求高手解决。
[打印本页]
作者:
fso918
时间:
2011-11-17 13:05
标题:
编码问题,求高手解决。
我把Tomcat服务器的server.xml的connector配置改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="GBK" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="GBK" />
然后请求资源,在浏览器中输入url:http://localhost:8080/dm/test.jsp?username=中国
然后回车访问,然后我再处理servlet中迭代:
String username=request.getParameter("username");
for(int i=0;i<username.getBytes().length;i++){
System.out.println(username.getBytes()[i];
}
输出结果为:39,63,63,63, -88,-78
servlet中设置:
response.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
在test.jsp中,取出username显示:
${username}........
这里访问后显示的是乱码,
这是什么原因?
如果我把这两句话:
response.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
去掉,JSP页面能显示正常 ‘中国’字符。
作者:
quanhui
时间:
2011-11-17 13:22
是因为浏览器用的不是GBK吧?右键页面-〉编码-〉GB2312试试。
作者:
葛雨龙
时间:
2011-11-17 13:34
设置了response了,那request呢?
作者:
小王同志
时间:
2011-11-17 13:53
或者也可以在源文件“另存为”,在弹出的对话框最下面“编码”哪里选择编码的输出类型试试
作者:
fso918
时间:
2011-11-17 18:42
浏览器 用的是GB2312编码。
照例来说,浏览器应该对username=中国 中的中国进行URL编码,所用码表应该是GBK,如后服务器接受到请求后,根据我的配置,服务器应该用 GBK 码表来对URL进行解码,request.getParameter("username");取得的应该是URL解码后的数据。我将这个获得的结果在JSP中输出,并且设置,服务器向浏览器发送数据时用 GBK码表,同时 通知 浏览器用GBK的码表对服务器返回的信息进行解码,得到的应该是正确 的GBK码啊,怎么会出现乱码呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2