首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用GET方式传中文字符串 乱码,求救 [已结贴,结贴人:slash5437]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于: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  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kokobox
    • 等级:
    发表于:2008-03-27 00:00:321楼 得分:1
    url传递参数乱码,以前用ajax的时候碰到过,如果提交的中文字符少的话,用加密算了

    如果多的话,就比较麻烦,要考虑特殊字符
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 01:23:362楼 得分:1
    你用EL标签试试,
    a.jsp?name=request.getAttribute("name")
    a.jsp?name=${name}
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 01:45:313楼 得分:1
    忘记了,你的JSP页面有没有加 <%@ page language="java" pageEncoding="GBK"%>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 08:02:264楼 得分:0
    晕!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenhongxin
    • 等级:
    发表于:2008-03-27 08:07:385楼 得分:1
    <%@ page language="java" pageEncoding="UTF-8"%>    UTF-8
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 09:10:236楼 得分:0
    确保jsp页面,以及后台程序等,所有地方设置统一编码。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 09:25:207楼 得分:0
    现在已经是这样 <%@ page language="java" pageEncoding="GBK"%>

    全部的jsp页面已经都是GBK编码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenhongxin
    • 等级:
    发表于:2008-03-27 10:12:458楼 得分:0
    用EL来传内容就行了,我试过的,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 11:33:239楼 得分:1
    把取得的参数进行转码:String name = request.getParameter("name");String result = new String(name.getBytes("ISO-8859-1"),"UTF-8");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 13:37:0410楼 得分:0
    String name = request.getParameter("name");String result = new String(name.getBytes("ISO-8859-1"),"GBK");
    建议使用过滤器来过滤
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 15:03:1011楼 得分: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.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 15:26:3312楼 得分:0
    首先楼主可能把request.getAttribute和request.getParameter从本质上搞混了,前者所获得的是request对象的一个属性,它可以是任何值类型。
    后者是request对象的一个方法,是获得http请求的响应消息,这个消息是一个个的键值对,存储的只能是字符串。
    再者,使用get方法时,过滤器是没用的,过滤器只对post方法管用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 16:00:2113楼 得分:0
    tince say it right

    u can only use my method
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 16:02:1614楼 得分:5
    我也碰到过这个问题,已经解决
    1.页面设置pageEncoding="GBK"
    2.把tomcat的server.xml文件中找到 <Connector…………,在后面加上URIEncoding="GBK"/>

    搞定!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 16:11:0715楼 得分:5
    get中最好不要加中文

    解决方法可以参考我们教程中的一个例子:
    http://family168.com/tutorial/jsp/html/jsp-ch-02.html#jsp-ch-02-02-03
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 16:41:3816楼 得分:0
    现在JSP页面URL中传中文好像也没有一个很好的解决方法,中文传递尽量用post吧!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 16:56:3417楼 得分:0
    哪里有那么麻烦,同意14楼
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 17:21:2418楼 得分:0
    to:lifetragedy
    转码我已经用了这个了java.net.URLEncoder.encode( “测试”,"UTF-8")
    但是还是不行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 18:20:5919楼 得分:5
    我上面已经说过了,使用get方法时,只能用一种转码方式,(至少我知道的只有一种)
    String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GBK");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-27 19:46:5120楼 得分:0
    同意9楼和19楼
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-28 16:46:4121楼 得分:0
    在server.xml中加入 <Connector…………,在后面加上URIEncoding="GBK"/>
    现在在jsp中的编码问题已经解决

    但是又有新的问题了

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

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

    这个问题要怎么解决呢?
    谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 05:11:3422楼 得分:0
    你在JSP接收页而写入如下代码:
    request.setCharcterEncoding("GBK");
    "setCharcterEncoding"这个方法可以在一个Servlet类中通过reqeust点出来
    当然你要继续传下去的话可以用response.setCharat..进行格式化后传出

    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved