还是请教一个url编码问题

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

请问,如何做到 在url中用汉字 和 UTF-8的url编码 都能正常显示?
...全文
144 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
strayly 2008-11-14
  • 打赏
  • 举报
回复
期待有高手来解答
rwjwjjn 2008-11-14
  • 打赏
  • 举报
回复
我也遇到过楼主的问题,是页面编码用gbk做的;
但是当我把所有编码的地方都设置成utf-8后;
在request.setCharacterEncoding("utf-8");
就可以用中文传递了。

建议用全部用utf-8,会少不少发麻
ziwei_1986 2008-11-14
  • 打赏
  • 举报
回复
为什么不用filter呢?
strayly 2008-11-14
  • 打赏
  • 举报
回复
楼上没太明白我的意思,我就是按上面设置的
现在url编码形式是正常的
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
但是如果直接在url中写中文就不行了
http://localhost:8080/search.jsp?keyword=编辑

我的意思是如何能让这两种形式都能正常
kingsam_8405 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shuai45 的回复:]
1在tomcat中设置 URIEncoding=“UTF-8”
2在jsp中

<%@ page pageEncoding=”UTF-8″%>
<%@ page contentType=”text/html;charset=UTF-8″%>
<%request.setCharacterEncoding(”UTF-8″);%>

如果还没有效果
那就java.net.URLEncoder.encode 进行转定义
[/Quote]

同意这种做法,我以前也遇到过,不过只修改了下tomcat中的设置就可以了
大河V5 2008-11-14
  • 打赏
  • 举报
回复
String keyword= req.getParameter("keyword");
// Collapsed characters support (GBK->UTF-8)
keyword = new String (name.getBytes("GBK"),"UTF-8");
shuai45 2008-11-14
  • 打赏
  • 举报
回复
1在tomcat中设置 URIEncoding=“UTF-8”
2在jsp中

<%@ page pageEncoding=”UTF-8″%>
<%@ page contentType=”text/html;charset=UTF-8″%>
<%request.setCharacterEncoding(”UTF-8″);%>

如果还没有效果
那就java.net.URLEncoder.encode 进行转定义

strayly 2008-11-14
  • 打赏
  • 举报
回复
就是 通过下面两种形式都能得到正确结果
http://localhost:8080/search.jsp?keyword=%E7%BC%96%E8%BE%91
http://localhost:8080/search.jsp?keyword=编辑
该如何做?
fengyangchao2 2008-11-14
  • 打赏
  • 举报
回复
在.net中用UrlEncode)(url)和UrlDecode(url)可以对带中文的页面进行自动编码和反编码
在Java中应该也有相应的方法
叶子哟 2008-11-14
  • 打赏
  • 举报
回复
转一下就行了
先设置request的编码是国标,再
return (new String(strutf8.getBytes("ISO-8859-1"), "GBK")); //去掉前后的空格;
strayly 2008-11-14
  • 打赏
  • 举报
回复
楼上说的很对,我所面临的就是这个问题,不知道有没有简便的办法解决
叶子哟 2008-11-14
  • 打赏
  • 举报
回复
呵呵,地址栏传送时实际是用gbk的url编码了的,在IE里都做了一层处理,你服务器按这个解码肯定没问题,如果你服务在按utf-8来解码,肯定就要出错了!
你可以比较用firefox和ie传送url参数,其实你服务器收到的都是用gbk编码的urlencode数据

strayly 2008-11-14
  • 打赏
  • 举报
回复
我记得在php里处理这个问题非常简单
在php里 UFT-8格式下 可以直接用函数 urldecode("%E7%BC%96%E8%BE%91") 和 urldecode("编辑")
他们两个输入的结果都是"编辑";
为什么java处理起来 这么麻烦?
oracle_lover 2008-11-14
  • 打赏
  • 举报
回复
加入 useBodyEncodingForURI="true"
strayly 2008-11-14
  • 打赏
  • 举报
回复
我比较困惑的是 request.setCharacterEncoding("GBK"); 可以处理地址栏的中文
request.setCharacterEncoding("UTF-8");确不能处理地址栏的中文
我如果页面用utf-8编码,该怎么处理地址栏的中文?
strayly 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 oracle_lover 的回复:]
tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码需在服务器server.xml中配置对应的端口中配置编码方式即可.例如:

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="…
[/Quote]
我试过了 通过文本框提交 可以, 但是通过地址栏直接输入中文 不行
我在jsp里 设置 request.setCharacterEncoding("GBK"); 地址栏输入中文,可以正常显示,但通过文本框 输入 就是乱码了,
因为我的页面是UTF-8 编码
但是 设置 request.setCharacterEncoding("UTF-8");确不能正确解析地址栏的中文
tujiyue 2008-11-14
  • 打赏
  • 举报
回复
用filter过滤也可以的,其实URL中中文变乱码对你有利
liliang1222 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 oracle_lover 的回复:]
tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码需在服务器server.xml中配置对应的端口中配置编码方式即可.例如:

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"  useBodyEncodingForURI="true" URIEncoding="UTF-8"/>

中加…
[/Quote]
URIEncoding="UTF-8"
oracle_lover 2008-11-14
  • 打赏
  • 举报
回复
tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码需在服务器server.xml中配置对应的端口中配置编码方式即可.例如:

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>

中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.

81,092

社区成员

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

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