用户名: 密   码:
   飞诺网 加入收藏
飞诺网 软件编程 C C++ Java VB Delphi Foxpro 汇编语言 游戏开发 移动开发 软件工程师 软工与管理 VC shell编程 C#
Java系列教程 Java实例 Java技术文档 lucene J2ME

您当前的位置:飞诺网 >> java >> Java实例

*当用户下载含有中文的文件时出现乱码的解决办法

www.diybl.com    时间 : 2008-05-07  作者:佚名   编辑:本站 点击:   [ 评论 ]

             

 

在做asp程序的时候,用了response.redirect "要下载的文件url"的方式来下载文件。但是当文件名含有中文时,用户点下载保存的时候,文件名在保存为对话框中确是乱码。

解决方法:

1、当把浏览器中的“总是通过UTF-8发送URL”去掉

这样,url将会通过操作系统的默认编码发送。而且会将url作为操作系统的默认编码进行看待。而我们的iis中文版中的字符串编码默认是GB2312(GBK)。刚好我们客户端和服务器端都是通过GB2312(GBK)编码,这时就不会乱码

这种方法不太适用。因为我们要协调好客户端和服务端

2、当我们知道ie处理这个文件名时,默认情况下,是把它作为utf-8编码处理的,而我们的url发送过来的时候是gb2312编码的,所以会出现乱码,因此,只要我们在服务端把gb2312编码转换为utf-8编码就行了。

如下代码所示:

  DefaultCodePage=Session.CodePage
  Session.CodePage=65001 ‘utf-8
  PFileName=Server.URLEncode(PFileName) ''encode  file name by utf-8
  Session.CodePage=DefaultCodePage ''restore

<script language="javascript">
 window.navigate("<%=PFileName%>")
</script>

注意上面代码中为什么没使用:response.redirect PFileName

这是因为redirect方法会对字符串进行编码,这样会将PFileName中的%编码为%2E这样就出错了

如果图片或页面不能正常显示请点击这里
Java实例推荐文章

文章评论