Url传递中文出现乱码解决纪实
来源:互联网 发布:yap—yum图解 编辑:程序博客网 时间:2024/04/30 14:28
作者fbysss
msn:jameslastchina@hotmail.com
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:乱码
文件1:encode.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%
String sFileName = "中文文件名.doc";
sFileName = java.net.URLEncoder.encode(sFileName);//代码行1
%>
<a href="javascript:decode('<%=sFileName%>');">decode</a>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<body>
<script language="javascript">
function decode(filename){
location.href="decode.jsp?filename="+filename;//代码行2
}
</script>
</body>
</html>
文件2:decode.jsp
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%
String sFileName = request.getParameter("filename");
sFileName = java.net.URLDecoder.decode(sFileName,"GBK");//代码行3
out.println("filename:"+sFileName);
%>
看上去,这样肯定可以达到要求了,但是事实不是这样,javascript并不识别jsp编码后的字符串:
用鼠标移动到链接上方时,可以看到IE状态栏上的确是正确的编码,即"%D6%D0%CE%C4%CE%C4%BC%FE%C3%FB.doc"
然而要注意的是:用鼠标右键点击链接-〉属性看到的URL是javascript:decode('ÖÐÎÄÎļþÃû.doc');后果可想而知,转向后输出的是乱码。
弄了半天,转UTF-8也是一样,一个小问题整的很郁闷,最后想到,还得在js这里下手。
把encode.jsp代码行1注释掉,代码行2前面加入一行:filename = encodeURI(filename);
看到一点进展:转向后的url已经很规范了:filename=%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6%E5%90%8D.doc,但是结果仍然是乱码。为啥呢?注意观察,前面的编码和后面是不一样的!
然而,javascript的EncodeURI没有提供编码参数,默然就是UTF-8. 好,那么 sFileName = java.net.URLDecoder.decode(sFileName,"UTF-8");行不行呢?答案是:不行,原因我现在还没找到,找到了会在此补充,如果哪位知道,还望指点。
解决办法:把代码行3替换成
sFileName= new String(sFileName.getBytes("ISO-8859-1"), "UTF-8");
现在再看结果,已经是正常的中文了。
补充:Ajax中,servlet输出中文之后,需要js读取,同样面临编码问题,可以采取如下方式:
在servlet中用URLEncoder编码sText = URLEncoder.encode(sText,"UTF-8");
在js中用decodeURI解码xText = decodeURI(xText);
- Url传递中文出现乱码解决纪实
- JSP URL中文传递出现乱码解决
- 如何解决URL传递中文时出现乱码问题
- url传递中文乱码解决
- url传递中文乱码解决
- url传递中文乱码解决
- Struts2 url传递中文出现乱码
- ExtJS04:解决URL传递中文乱码问题
- 解决URL传递中的中文乱码问题
- 解决url传递中文参数乱码问题
- js解决URL传递中文乱码
- 如何解决URL传递中文乱码
- 解决URL传递中文乱码问题。
- 解决Java中URL传递中文参数时出现乱码的问题
- dtree中url参数中中文参数的传递,出现乱码问题的解决。
- URL传递中文,乱码
- URl传递中文乱码
- JS中文转换(UTF-8),url传递中文乱码解决
- 开发RSS聚合的开源框架
- 关于页面上如何获取用户选中的多个checkbox所传递的值
- Java学习之路:不走弯路,就是捷径
- 网页内嵌多媒体内容的完美实现
- 打算近段时间推出《需求管理之我见》系列文章
- Url传递中文出现乱码解决纪实
- 衰~! 硬盘坏了
- 如何移植32位C#工程到64位的XP或者VISTA下?
- 游戏《侠盗飞车3:罪恶城市》功能码
- 计算投资收益的代码
- 保存数据库中其他对象不变,删除数据库中所有数据的实现方法
- 品书如品人,路遥知马力,日久淘好书
- 品书如品人,路遥知马力,日久淘好书
- 适当地用金钱去衡量