A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fso918 黑马帝   /  2011-11-17 13:05  /  1844 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我把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页面能显示正常 ‘中国’字符。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

4 个回复

倒序浏览
是因为浏览器用的不是GBK吧?右键页面-〉编码-〉GB2312试试。
回复 使用道具 举报
设置了response了,那request呢?
回复 使用道具 举报
或者也可以在源文件“另存为”,在弹出的对话框最下面“编码”哪里选择编码的输出类型试试
回复 使用道具 举报
fso918 黑马帝 2011-11-17 18:42:44
报纸
浏览器 用的是GB2312编码。
照例来说,浏览器应该对username=中国  中的中国进行URL编码,所用码表应该是GBK,如后服务器接受到请求后,根据我的配置,服务器应该用  GBK  码表来对URL进行解码,request.getParameter("username");取得的应该是URL解码后的数据。我将这个获得的结果在JSP中输出,并且设置,服务器向浏览器发送数据时用 GBK码表,同时 通知 浏览器用GBK的码表对服务器返回的信息进行解码,得到的应该是正确 的GBK码啊,怎么会出现乱码呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马