首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
J2EE / EJB / JMS
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
用GET方式传中文字符串 乱码,求救
[已结贴,结贴人:slash5437]
加为好友
发送私信
在线聊天
slash5437
Slash
等级:
发表于:
2008-03-26 23:50:07
楼主
环境jdk1.6 tomcat6.0
在jsp中,用get方式向一个页面中传一个参数,例如:name="测试" a.jsp?name=测试
在接受的页面中显示为乱码 ,并且转码无效
在tomcat的server.xml文件中 Connector标签中已经加入URIEncoding="UTF-8"这个属性,并对name的中文参数进行了url编码java.net.URLEncoder.encode( “测试”,"UTF-8") 在接收页面还是乱码
请问这个需要怎么解决?
另外在struts中也是使用get传中文参数就没有问题,具体过程:在action类中把中文参数 写在request.setAttribute("name","测试")中,再在显示页面中取出 如 a.jsp?name=request.getAttribute("name") ,不用对request.getAttribute中取得的值做任何编码操作,传参正常,不会出现乱码情况
请问这个是什么原理?
望大侠指点,谢谢!
问题点数:
20
回复次数:
22
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kokobox
koko@低调...低调......
等级:
发表于:
2008-03-27 00:00:32
1
楼 得分:
1
url传递参数乱码,以前用ajax的时候碰到过,如果提交的中文字符少的话,用加密算了
如果多的话,就比较麻烦,要考虑特殊字符
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
pyantking
等级:
发表于:
2008-03-27 01:23:36
2
楼 得分:
1
你用EL标签试试,
a.jsp?name=request.getAttribute("name")
a.jsp?name=${name}
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
pyantking
等级:
发表于:
2008-03-27 01:45:31
3
楼 得分:
1
忘记了,你的JSP页面有没有加 <%@ page language="java" pageEncoding="GBK"%>
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
CaiNiao_ge
WU
等级:
发表于:
2008-03-27 08:02:26
4
楼 得分:
0
晕!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chenhongxin
超级网工(J2EE小鸟版)
等级:
发表于:
2008-03-27 08:07:38
5
楼 得分:
1
<%@ page language="java" pageEncoding="UTF-8"%> UTF-8
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kevinchj
叉叉(kchjxx)
等级:
发表于:
2008-03-27 09:10:23
6
楼 得分:
0
确保jsp页面,以及后台程序等,所有地方设置统一编码。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
slash5437
Slash
等级:
发表于:
2008-03-27 09:25:20
7
楼 得分:
0
现在已经是这样 <%@ page language="java" pageEncoding="GBK"%>
全部的jsp页面已经都是GBK编码
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chenhongxin
超级网工(J2EE小鸟版)
等级:
发表于:
2008-03-27 10:12:45
8
楼 得分:
0
用EL来传内容就行了,我试过的,
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
happy_txf
快乐神
等级:
发表于:
2008-03-27 11:33:23
9
楼 得分:
1
把取得的参数进行转码:String name = request.getParameter("name");String result = new String(name.getBytes("ISO-8859-1"),"UTF-8");
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
mxsoftware
我想裸奔
等级:
发表于:
2008-03-27 13:37:04
10
楼 得分:
0
String name = request.getParameter("name");String result = new String(name.getBytes("ISO-8859-1"),"GBK");
建议使用过滤器来过滤
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lifetragedy
生活是场悲剧
等级:
发表于:
2008-03-27 15:03:10
11
楼 得分:
0
when u using get method to transfer the variable pls use
String name=Encoder.encode(str);
then
put it into ur url
when in the page u jumped or redirected,
use
String name=Decoder.decode(str);
to get the correct the chinese info.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
tince
Craftsman
等级:
发表于:
2008-03-27 15:26:33
12
楼 得分:
0
首先楼主可能把request.getAttribute和request.getParameter从本质上搞混了,前者所获得的是request对象的一个属性,它可以是任何值类型。
后者是request对象的一个方法,是获得http请求的响应消息,这个消息是一个个的键值对,存储的只能是字符串。
再者,使用get方法时,过滤器是没用的,过滤器只对post方法管用。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lifetragedy
生活是场悲剧
等级:
发表于:
2008-03-27 16:00:21
13
楼 得分:
0
tince say it right
u can only use my method
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
tianyidan
阳丁丁儿
等级:
发表于:
2008-03-27 16:02:16
14
楼 得分:
5
我也碰到过这个问题,已经解决
1.页面设置pageEncoding="GBK"
2.把tomcat的server.xml文件中找到 <Connector…………,在后面加上URIEncoding="GBK"/>
搞定!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xyz20003
登高临远
等级:
发表于:
2008-03-27 16:11:07
15
楼 得分:
5
get中最好不要加中文
解决方法可以参考我们教程中的一个例子:
http://family168.com/tutorial/jsp/html/jsp-ch-02.html#jsp-ch-02-02-03
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wsm106
等级:
发表于:
2008-03-27 16:41:38
16
楼 得分:
0
现在JSP页面URL中传中文好像也没有一个很好的解决方法,中文传递尽量用post吧!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Jam_2008
脑盲
等级:
发表于:
2008-03-27 16:56:34
17
楼 得分:
0
哪里有那么麻烦,同意14楼
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
slash5437
Slash
等级:
发表于:
2008-03-27 17:21:24
18
楼 得分:
0
to:lifetragedy
转码我已经用了这个了java.net.URLEncoder.encode( “测试”,"UTF-8")
但是还是不行
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
tince
Craftsman
等级:
发表于:
2008-03-27 18:20:59
19
楼 得分:
5
我上面已经说过了,使用get方法时,只能用一种转码方式,(至少我知道的只有一种)
String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GBK");
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lionspate
^..^
等级:
发表于:
2008-03-27 19:46:51
20
楼 得分:
0
同意9楼和19楼
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
slash5437
Slash
等级:
发表于:
2008-03-28 16:46:41
21
楼 得分:
0
在server.xml中加入 <Connector…………,在后面加上URIEncoding="GBK"/>
现在在jsp中的编码问题已经解决
但是又有新的问题了
因为这个程序由 2部分组成的
全都是jsp的部分现在已经正常
但是用struts写的部分又有问题了,现在post 方法用转码
String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GBK");
这样子 一切ok,但是get方法就有问题了
在没进行转码之前 就是正确的中文
这个问题要怎么解决呢?
谢谢!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
DBNWP
NWP
等级:
发表于:
2008-03-29 05:11:34
22
楼 得分:
0
你在JSP接收页而写入如下代码:
request.setCharcterEncoding("GBK");
"setCharcterEncoding"这个方法可以在一个Servlet类中通过reqeust点出来
当然你要继续传下去的话可以用response.setCharat..进行格式化后传出
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友