两个jsp页面之间通过标签传输数据是出现乱码问题

//这个是第一个jsp












/c:url
详细
//这个是第二个jsp
商品名:${param.gname}

商品价格:${param.gprice}

所属类别:${param.ctype}

商品图片:

但是在网页上却是显示的是
商品名:爱国者mp3

商品价格:0.01

所属类别:男士休闲
但是我的第二个页面的地址栏传过去的值却是这个
gname=%E7%88%B1%E5%9B%BD%E8%80%85mp3&gprice=0.01&gpic=004.png&gremark=%E7%88%B1%E5%9B%BD%E8%80%85%E5%93%81%E7%89%8C&gxremark=%E5%8F%AF%E4%BB%A5%E8%BF%9E%E7%BB%AD%E5%90%AC%E6%AD%8Cn%E5%B0%8F%E6%97%B6&gdate=2013-04-17+21%3a39%3a47.743&giscommend=true&gisopen=true&cid=1&ctype=%E7%94%B7%E5%A3%AB%E4%BC%91%E9%97%B2
求这个问题怎么解决啊

6个回答

因为是get 所以光加过滤器是无效的 get方式默认就是这种情况 你可以参考如下文章解决 和servlet是一回事
[url]http://www.iteye.com/topic/1121242#2322208[/url]

sjyioi
sjyioi 非常感谢帮助解答问题!
接近 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 你可以自己写个标签 或者按照我发的那篇文章来解决
接近 7 年之前 回复
sjyioi
sjyioi 嗯这个办法好行了。我还想问个问题为什么这个就必须写Java代码在里面不能直接用标签解决吗??
接近 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 1、你试过 2.5 吗 2、<%=new String(request.getParameter("ctype").getBytes("ISO-8859-1"), "UTF-8")%>
接近 7 年之前 回复
sjyioi
sjyioi 不行啊上面的我都试过了还是乱码啊
接近 7 年之前 回复

请确保jsp文件编码也页面里面的编码格式一致
还有就是看下第一个页面是不是在传递之前就已经乱码还是传递过去之后才乱码的

sjyioi
sjyioi 非常感谢帮助解决问题
接近 7 年之前 回复
sjyioi
sjyioi 直接在第二个jsp里面加上Java代码request.setCharacterEncoding("utf-8");这样吗?
接近 7 年之前 回复
jinandmei
jinbingchuan 在第二个页面里request.setCharacterEncoding(env)进行编码,若是所有的都正确,还是出现问题,若是使用 tomcat,则需要在 tomcat里 server.xml里修改编码设置
接近 7 年之前 回复
jinandmei
jinbingchuan 那就是传递过去之后的乱码,复制之后变成了你说的,那是因为标签已经为你编码了 你可以使用第二个页面request.setCharacterEncoding(env)或者添加过滤器进行编码
接近 7 年之前 回复
sjyioi
sjyioi 传过去之前不是乱码啊在传过去之后的地址栏显示的还是中文但是复制下来就成了gname=%E7%88%B1%E5%9B%BD%E8%80%85mp3&gprice=0.01&gpic=004.png&gremark=%E7%88%B1%E5%9B%BD%E8%80%85%E5%93%81%E7%89%8C&gxremark=%E5%8F%AF%E4%BB%A5%E8%BF%9E%E7%BB%AD%E5%90%AC%E6%AD%8Cn%E5%B0%8F%E6%97%B6&gdate=2013-04-17+21%3a39%3a47.743&giscommend=true&gisopen=true&cid=1&ctype=%E7%94%B7%E5%A3%AB%E4%BC%91%E9%97%B2这样了
接近 7 年之前 回复
sjyioi
sjyioi 什么意思能说详细点不?
接近 7 年之前 回复

get请求使用request.setCharacterEncoding(code)应该是不起作用的;
这种情况要对中文参数进行特殊处理:
传递之间encode(这里的标签可能已经给你encode了),接收到参数之后decode(java api);
如果是tomcat容器就直接修改server.xml里的编码设置;

sjyioi
sjyioi 问题已经的到解决了非常感谢
接近 7 年之前 回复
sjyioi
sjyioi 具体怎么弄得啊???
接近 7 年之前 回复

看看tomcat配置文件
conf\server.xml
connectionTimeout="20000"
redirectPort="8443" URIEncoding=”UTF-8”/>

sjyioi
sjyioi 像你说的那样修改web.xml文件或者<%=new String(request.getParameter("ctype").getBytes("ISO-8859-1"), "UTF-8")%这样都行
接近 7 年之前 回复
hejiaqi789
hejiaqi789 问题具体出在哪里,给出代码样例!谢谢.
接近 7 年之前 回复
hejiaqi789
hejiaqi789 不客气!我想问一下最终的解决办法是什么?
接近 7 年之前 回复
sjyioi
sjyioi 终于发现问题了原来是在网页上粘贴的代码的分号不睡英文输入法的分号,这个问题已经解决了非常感谢你啊!我已经选了最佳答案了非常抱歉,表示我衷心的感谢
接近 7 年之前 回复
sjyioi
sjyioi 我再试一试
接近 7 年之前 回复
hejiaqi789
hejiaqi789 那不应该啊。我刚试完.我这边启动没有问题
接近 7 年之前 回复
sjyioi
sjyioi <?xml version='1.0' encoding='utf-8'?>有啊我有这句话啊
接近 7 年之前 回复
sjyioi
sjyioi 哦我去试一试
接近 7 年之前 回复
hejiaqi789
hejiaqi789 你的xml编码样式没有设置 encoding="UTF-8" 所以才出错的
接近 7 年之前 回复
sjyioi
sjyioi <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding=”UTF-8”/> 我改成这样就起不来tomcat不懂怎么回事啊
接近 7 年之前 回复
hejiaqi789
hejiaqi789 <?xml version="1.0" encoding="UTF-8"?> ?
接近 7 年之前 回复
sjyioi
sjyioi com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.直接报错tomcat起都起不了
接近 7 年之前 回复
hejiaqi789
hejiaqi789 URIEncoding=”UTF-8”
接近 7 年之前 回复
sjyioi
sjyioi 我这样给tomcat配置直接报错啊tomcat都启动不了
接近 7 年之前 回复

get... 不解释

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问