日期:2014-05-20  浏览次数:20690 次

中文链接的问题
<a href="news/482家公司出现汇兑损失中石油损失最大_财经_腾讯网.htm" target="_blank">482家公司出现汇兑损失中石油损失最大_财经_腾讯网.htm</a>

这是一个带中文的链接,我的tomcat的server.xml中URIEncoding="GBK",页面也是用GBK,过滤器也是用GBK。
但是这样链接会出现百分号的URL没有编码的问题:
HTTP Status 404 - /News/news/482%E5%AE%B6%E5%85%AC%E5%8F%B8%E5%87%BA%E7%8E%B0%E6%B1%87%E5%85%91%E6%8D%9F%E5%A4%B1%E4%B8%AD%E7%9F%B3%E6%B2%B9%E6%8D%9F%E5%A4%B1%E6%9C%80%E5%A4%A7_%E8%B4%A2%E7%BB%8F_%E8%85%BE%E8%AE%AF%E7%BD%91.htm

而当我修改server.xml中的URIEncoding="UTF-8"时,一切又正常了。可是之前一直都是用GBK。
请问:有什么办法在不修改URIEncoding的情况下让访问中文名的htm正常?!

------解决方案--------------------
up....关注
------解决方案--------------------
<a href="news/<%=new String("482家公司出现汇兑损失中石油损失最大_财经_腾讯网.htm").getBytes("GBK"),"iso-8859-1"%>" target="_blank">482家公司出现汇兑损失中石油损失最大_财经_腾讯网.htm</a>
你这样试试! 不过不保证正确!  一般情况下还是少使用!
------解决方案--------------------
/News/news/482%E5%AE%B6%E5%85%AC%E5%8F%B8%E5%87%BA%E7%8E%B0%E6%B1%87%E5%85%91%E6%8D%9F%E5%A4%B1%E4%B8%AD%E7%9F%B3%E6%B2%B9%E6%8D%9F%E5%A4%B1%E6%9C%80%E5%A4%A7_%E8%B4%A2%E7%BB%8F_%E8%85%BE%E8%AE%AF%E7%BD%91.htm 这串有可能是浏览器自己转译过的默认应该是用UTF-8对中文转译的(可以用IE 和FF看效果)正常理解 如果服务器去做这串解析 肯定需要一个解码的过程~这里就可能就是涉及到编码的问题了.tomcat的server.xml中URIEncoding="GBK",处理这串URL应该是容器的职责 所以当容器是GBK编码就没办法对这串作转义了就找不到对应的页面了。
容器的编码 一般 都是不用作设置的。
也希望高手指点下~
------解决方案--------------------
String str="482家公司出现汇兑损失中石油损失最大_财经_腾讯网.htm";
先转码 URLEncoder.encode(str, "GBK");
在接受值 再转码 String dd=new String(str.getBytes("GBK"),"iso-8859-1"))
------解决方案--------------------
探讨
应该这样写,
<%=new String("482家公司出现汇兑损失中石油损失最大_财经_腾讯网.htm".getBytes("GBK"),"iso-8859-1")%>
这个我试了,会乱码。

------解决方案--------------------
URLEncoder和URLDecoder不行吗?
------解决方案--------------------
刚看了下现在在维护的一个实验室内部网页,中文没有问题啊
<a href="docs/实验室项目列表.htm">
很ok的