求助:url中文参数变问号但在别人那里就没问题

smcfy 2010-06-28 06:48:42
如题,我们一个项目组的,
<a href='brandsEdit!search.do?choice=N&Name=宝&pageSize=12&page=2'>下一页</a>

这个链接,在后台对Name参数用str = new String(str.getBytes("ISO-8859-1"),"UTF-8");进行了编码转换
在我这里Name参数读出来的值是??pageSize=12,但在其他人那里就没有问题,这是为什么呢?
...全文
670 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
coooliang 2010-06-29
  • 打赏
  • 举报
回复
mark
smcfy 2010-06-29
  • 打赏
  • 举报
回复
应该是这样没错

[Quote=引用 15 楼 stl0 的回复:]

顺便请教下

1. 用js的encodeURI转码之后,在servlet执行时, 再转回来 是不是用
new String(req.getParameter("name").getBytes("ISO-8859-1"), "utf-8");

2.如果用java.net.URLEncoder转码,用java.net.URLEncoder就可以了?
[/Quote]
smcfy 2010-06-29
  • 打赏
  • 举报
回复
问题解决了,
先用str=URLEncoder.encode(String,"UTF-8")进行编码,将str写进Url
然后读的时候用str = new String(str.getBytes("ISO-8859-1"),"UTF-8")对得到的参数进行编码转换
还是自己没有很好的理解编码的问题,处理起来不够仔细
谢谢各位的回答!
stl0 2010-06-29
  • 打赏
  • 举报
回复
顺便请教下

1. 用js的encodeURI转码之后,在servlet执行时, 再转回来 是不是用
new String(req.getParameter("name").getBytes("ISO-8859-1"), "utf-8");

2.如果用java.net.URLEncoder转码,用java.net.URLEncoder就可以了?
智鹿软件 2010-06-29
  • 打赏
  • 举报
回复
request.setCharEcoding("gbk");
response.setCharEcoding("gbk");
yangxuebao123 2010-06-29
  • 打赏
  • 举报
回复
url这里传值真的不要用汉字,你可以用隐藏表单,等其他方式,

str = new String(str.getBytes("ISO-8859-1"),"UTF-8");

换成str = new String(str.getBytes("ISO-8859-1"),"gb2312");试试

daocha 2010-06-29
  • 打赏
  • 举报
回复
response.setCharacterEncoding
request.setCharacterEncoding 了麼
  • 打赏
  • 举报
回复
Tomcat server.xml Connector 添加 URIEncoding="GBK"
sun0322 2010-06-29
  • 打赏
  • 举报
回复
你得到的乱码是%ee%aa%1a之类的,还是??,还是奇怪的文字。
smcfy 2010-06-29
  • 打赏
  • 举报
回复
各位DGDJ,好像不是中文的问题啊!我用URLEncoder.encode(String)进行编码之后该链接变成了
<a href='brandsEdit!search.do?choice=N&Name=%B1%A6&pageSize=12&page=2'>下一页</a>

但读到的参数仍然是乱码,这是为什么呢?
smcfy 2010-06-28
  • 打赏
  • 举报
回复
好吧,我检讨!因为在另外一个人那里是可以运行的,所以我想弄明白是为什么?呵呵
[Quote=引用 3 楼 bao110908 的回复:]

自己使用 JavaScript 的 encodeURI 或者 Java 的 java.net.URLEncoder.encode 方法进行 URL 转码。

PS:这个问题在这里不知道出现过多少次了!
[/Quote]
xiaochengfu1 2010-06-28
  • 打赏
  • 举报
回复


每天回帖即可获得10分可用分!
qiheia 2010-06-28
  • 打赏
  • 举报
回复
URL直接传递中文参数会出现乱码的

要穿中文参数的话,最好先转码,就用encode方法,然后再后台去解码 str = new String(str.getBytes("ISO-8859-1"),"UTF-8")
sun0322 2010-06-28
  • 打赏
  • 举报
回复
<a href='ShowBooksByCateName?CategoryName=<%=java.net.URLEncoder.encode("Visual C++","gb2312")%>' >
String cateName = request.getParameter("CategoryName");
if(cateName !=null){
cateName =new String(cateName.getBytes("iso-8859-1"),"gb2312")
}
  • 打赏
  • 举报
回复
自己使用 JavaScript 的 encodeURI 或者 Java 的 java.net.URLEncoder.encode 方法进行 URL 转码。

PS:这个问题在这里不知道出现过多少次了!
  • 打赏
  • 举报
回复
URL 中不允许出现汉字!
zhangweitc 2010-06-28
  • 打赏
  • 举报
回复
byte[] b=str.getBytes("ISO-8859-1");
str=new String(b);试试看

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧