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

本文介绍了解决ASP程序中中文文件名下载时出现乱码的问题。通过调整编码方式,确保文件名正确显示。具体包括修改客户端发送URL的编码格式及服务器端将GB2312编码转换为UTF-8。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

             

 

在做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这样就出错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值