walk walk 2008-11-14 10:21
浏览 720
已采纳

如何在get方式中,参数为url编码格式和中文时都能正常显示?

我用的是tomcat server.xml设置了URIEncoding="UTF-8"
页面中如果 从文本框中输入中文 然后提交 是正常的
如果用这种UTF-8编码url形式也是正常的,
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
但是如果在url中直接用汉字就不行了会出现乱码

就是 通过下面两种形式都能得到正确结果
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
http://localhost:8080/search.jsp?keyword=编辑
该如何做?
[b]问题补充:[/b]
我用的是tomcat server.xml设置了URIEncoding="UTF-8"
页面中如果 从文本框中输入中文 然后提交 是正常的
如果用这种UTF-8编码url形式也是正常的,
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
但是如果在url中直接用汉字就不行了会出现乱码

就是 通过下面两种形式都能得到正确结果
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
http://localhost:8080/search.jsp?keyword=编辑
该如何做?
我页面用的是UTF-8,tomcat的 server.xml已经设置了URIEncoding="UTF-8"

表单已经设置了 method="get" 提交的时候是正常的,它会自动转为url编码格式
但是如果直接在浏览器地址里 输入中文参数就 不正常了 是乱码"����”格式

其实这个在应用中也没什么大问题,就是在firefox下不太好,因为把http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91 这个地址复制到ff地址栏的时候,它自动转为正常的中文,那样用户搜的话就是乱码
[b]问题补充:[/b]
我用的是tomcat server.xml设置了URIEncoding="UTF-8"
页面中如果 从文本框中输入中文 然后提交 是正常的
如果用这种UTF-8编码url形式也是正常的,
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
但是如果在url中直接用汉字就不行了会出现乱码

就是 通过下面两种形式都能得到正确结果
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
http://localhost:8080/search.jsp?keyword=编辑
该如何做?
问题补充:

我页面用的是UTF-8,tomcat的 server.xml已经设置了URIEncoding="UTF-8"

表单已经设置了 method="get" 提交的时候是正常的,它会自动转为url编码格式
但是如果直接在浏览器地址里 输入中文参数就 不正常了 是乱码"����”格式

其实这个在应用中也没什么大问题,就是在firefox下不太好,因为把http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91 这个地址复制到ff地址栏的时候,它自动转为正常的中文,那样用户搜的话就是乱码
[b]问题补充:[/b]
request.setCharacterEncoding("GBK"); 可以处理地址栏的中文
但是request.setCharacterEncoding("UTF-8");确不能直接处理地址栏的中文
我如果页面用utf-8编码,该怎么处理地址栏的中文?

  • 写回答

18条回答 默认 最新

  • weixin_42298684 2008-11-19 15:32
    关注

    http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
    --URIEncoding是UTF-8
    FF中会把:
    http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
    转成:
    http://localhost:8080/search.jsp?keyword=编辑
    然后这个又会转成:
    http://www.baidu.com/s?wd=%B1%E0%BC%AD

    --所以FF神奇的将URIEncoding从UTF-8转成ISO-8859-1,哈哈

    解决的方式也很简单,
    你看看百度:
    http://www.baidu.com/s?wd=%B1%E0%BC%AD
    http://www.baidu.com/s?wd=编辑

    URIEncoding就用ISO-8859-1.

    大多浏览器会把中文直接换成:ISO-8859-1,如果在你的系统里确实需要用户在地址打入中文直接进行查询,建议把URIEncoding改成ISO-8859-1就可以了.但这样以后会造成其它用UTF-8编码的地方就要单独转码了,反而不方便(JSON数据的提交);所以我的建议是不要让用户在地址栏打入中文进行操作;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(17条)

报告相同问题?