用GET方式传中文字符串 乱码,求救

slash5437 2008-03-26 11: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中取得的值做任何编码操作,传参正常,不会出现乱码情况
请问这个是什么原理?

望大侠指点,谢谢!
...全文
1496 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
DBNWP 2008-03-29
  • 打赏
  • 举报
回复
你在JSP接收页而写入如下代码:
request.setCharcterEncoding("GBK");
"setCharcterEncoding"这个方法可以在一个Servlet类中通过reqeust点出来
当然你要继续传下去的话可以用response.setCharat..进行格式化后传出

slash5437 2008-03-28
  • 打赏
  • 举报
回复
在server.xml中加入<Connector…………,在后面加上URIEncoding="GBK"/>
现在在jsp中的编码问题已经解决

但是又有新的问题了

因为这个程序由 2部分组成的
全都是jsp的部分现在已经正常

但是用struts写的部分又有问题了,现在post 方法用转码
String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GBK");
这样子 一切ok,但是get方法就有问题了
在没进行转码之前 就是正确的中文

这个问题要怎么解决呢?
谢谢!
kokobox 2008-03-27
  • 打赏
  • 举报
回复
url传递参数乱码,以前用ajax的时候碰到过,如果提交的中文字符少的话,用加密算了

如果多的话,就比较麻烦,要考虑特殊字符
happy_txf 2008-03-27
  • 打赏
  • 举报
回复
把取得的参数进行转码:String name = request.getParameter("name");String result = new String(name.getBytes("ISO-8859-1"),"UTF-8");
chenhongxin 2008-03-27
  • 打赏
  • 举报
回复
用EL来传内容就行了,我试过的,
slash5437 2008-03-27
  • 打赏
  • 举报
回复
现在已经是这样<%@ page language="java" pageEncoding="GBK"%>

全部的jsp页面已经都是GBK编码
kevinchj 2008-03-27
  • 打赏
  • 举报
回复
确保jsp页面,以及后台程序等,所有地方设置统一编码。
chenhongxin 2008-03-27
  • 打赏
  • 举报
回复
<%@ page language="java" pageEncoding="UTF-8"%> UTF-8
geweixinerr 2008-03-27
  • 打赏
  • 举报
回复
晕!
lionspate 2008-03-27
  • 打赏
  • 举报
回复
同意9楼和19楼
tince 2008-03-27
  • 打赏
  • 举报
回复
我上面已经说过了,使用get方法时,只能用一种转码方式,(至少我知道的只有一种)
String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GBK");
slash5437 2008-03-27
  • 打赏
  • 举报
回复
to:lifetragedy
转码我已经用了这个了java.net.URLEncoder.encode( “测试”,"UTF-8")
但是还是不行
跑路的蛤蟆 2008-03-27
  • 打赏
  • 举报
回复
哪里有那么麻烦,同意14楼
一板砖夯死你 2008-03-27
  • 打赏
  • 举报
回复
现在JSP页面URL中传中文好像也没有一个很好的解决方法,中文传递尽量用post吧!
临远 2008-03-27
  • 打赏
  • 举报
回复
get中最好不要加中文

解决方法可以参考我们教程中的一个例子:
http://family168.com/tutorial/jsp/html/jsp-ch-02.html#jsp-ch-02-02-03
tianyidan 2008-03-27
  • 打赏
  • 举报
回复
我也碰到过这个问题,已经解决
1.页面设置pageEncoding="GBK"
2.把tomcat的server.xml文件中找到<Connector…………,在后面加上URIEncoding="GBK"/>

搞定!
TGITCIC 2008-03-27
  • 打赏
  • 举报
回复
tince say it right

u can only use my method
tince 2008-03-27
  • 打赏
  • 举报
回复
首先楼主可能把request.getAttribute和request.getParameter从本质上搞混了,前者所获得的是request对象的一个属性,它可以是任何值类型。
后者是request对象的一个方法,是获得http请求的响应消息,这个消息是一个个的键值对,存储的只能是字符串。
再者,使用get方法时,过滤器是没用的,过滤器只对post方法管用。
TGITCIC 2008-03-27
  • 打赏
  • 举报
回复
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.
pyantking 2008-03-27
  • 打赏
  • 举报
回复
忘记了,你的JSP页面有没有加<%@ page language="java" pageEncoding="GBK"%>
加载更多回复(2)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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