当下载文件时,会出现文件名乱码(文件名中有中文)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当下载文件时,会出现文件名乱码(文件名中有中文)相关的知识,希望对你有一定的参考价值。

在ie下是正常显示,另外我已经在meta标签加上了utf-8并且设置了Response.ContentEncoding = System.Text.Encoding.UTF8; 我是用.NET写的程序,求解决

这种情况,多数是因为参数解析编码异常,只需要在取得文件时进行URL编码转码即可;

如:String str = new String(str.getByte("iso8859-1"),"UTF-8");

完整代码如图片:

or

参考技术A   您好!很高兴为您答疑。
  您的问题主要是没有指定URL中数据编码集而导致的错误,请使用System.Web.HttpUtility.UrlEncode(name)方法修订下试一试。另外,请不要反复快速重复地问同一个问题啦。
  如果对我们的回答存在任何疑问,欢迎继续问询。追问

你好,我试着改了一下,还是不好用, 我现在代码流程是:在js中把正确的中文文件名放在下载页面的url后边传递过去,到下载页面的cs文件里边就乱码了。全是百分号那种乱码

追答

  我晕,含有百分号那个不是乱码呀...

  请参考阅读下:url 编码(percentcode 百分号编码)。

在IE浏览器 使用PHPExcel导出文件时时 文件名中文乱码

1.当我们使用IE内核的浏览器下在PHPExcel报表时(谷歌、火狐浏览器正常, IE浏览器,360浏览器的兼容模式报错),会出现如下错误:

2.解决办法:

在下载文件时,对当前的浏览器进行判断,

如果是IE内核的浏览器的话,进行文件名的转码,

若不是IE内核的浏览器,则不用。

关键代码如下:

$userBrowser = $_SERVER[\'HTTP_USER_AGENT\'];
if ( preg_match( \'/MSIE/i\', $userBrowser ) ) {
$filename = urlencode($filename);
}
$filename = iconv(\'UTF-8\', \'GBK//IGNORE\', $filename);

 

 

 

 

END

以上是关于当下载文件时,会出现文件名乱码(文件名中有中文)的主要内容,如果未能解决你的问题,请参考以下文章

在IE浏览器 使用PHPExcel导出文件时时 文件名中文乱码

C语言文件输出时,输入数据后为啥会出现乱码

PHP解决中文乱码问题

php 上传文件名出现乱码

windows下的txt文件传到Linux下中文乱码问题

解决phpexcel保存时文件命中文出现 乱码 (这个真的有用)