让服务器支持中文文件名下载的设置方法

很文博客hinven.com 2021年12月14日08:08:52服务器评论1761516字阅读模式

今天有客户说在我们网站无法下载包含中文文件名的文件,经过多方测试,强烈建议不要用中文文件名,如果修改比较麻烦,可以参考下面的方法

这个问题讨论过很多次了,确实是ms的大bug,出现在远东语言版的iis上。除了骂鳖儿该死之外,你有五个选择:

1. 换用其他的web server,比如apache。 [强烈推荐本方法]

2. 不使用中文做文件名,可以用拼音来替代。 [推荐]

3. 使用中英文混合文件名(据称能回避bug,但未经完全测试,不能保证所有情况下都能正确访问) [不推荐]

4. 等ms出补丁 [没希望了,不知道多久了,也没看到补丁]

5. 强制所有的用户都仅使用直接以本地中文编码发送url的浏览器 [你等着被用户抱怨吧]

其实解决方法很简单:

修改注册表

local machine-> system->currentControlset->services->inetinfo->

paramters->favordbcs 由1改为0,重启iis即可

之所以能奏效,据我分析在于:

远东版的iis由于本地化的win2k采用的都是本地编码比如gbk或者shift-jis或者big5之类,这些编码都是双字节混合编码。

favordbcs的名字估计就是 “双字节编码习惯”。ms可能针对双字节编码作了智能判断的算法,或者是获得了较高的辨认优先级。

可惜ms可能有一些bug估计造成某些utf-8的编码和本地双字节编码产生冲突,距某些人说是会丢弃一个字节。

本来我准备做个完全的测试,不过现在既然有了这个workaround,就不必麻烦了。

问题在于,此方法肯定只是workaround,而且微软肯定早就知道,居然不公布,在ms网站上也搜索不到!

============

'转换双字节字符为合法的URL传输字串

  1. function getUrlEncodel(byVal Url)
  2. Dim i,code
  3. getUrlEncodel=""
  4. if trim(Url)="" then exit function
  5. for i=1 to len(Url)
  6. code=Asc(mid(Url,i,1))
  7. If code<0 Then code = code + 65536
  8. If code>255 Then
  9. getUrlEncodel=getUrlEncodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
  10. else
  11. getUrlEncodel=getUrlEncodel&mid(Url,i,1)
  12. end if
  13. next
  14. end function

测试通过。

iis 不能下载 中文rar文件

最近发现IIS不能下载中文名称的文件,觉得很奇怪。

版本:windows2003server+iis6

应该是没问题的啊。

上网查了一下,说:

在运行里打开注册表:桌面左下角“开始”菜单,运行,输入“regedit”,98版本是"regedit32",展开下面目录,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\

FavorDBCS 的值改为"0" 如果没有 FavorDBCS 右击新建 [字符串值]

或直接运行下面的reg文件

  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters]
  3. "favordbcs"="0"

然后重新启动IIS。

IIS不能下载RAR文件,如何解决这个问题?

一,双击IIS管理器——IDC(本地计算机)——WEB服务扩展

二,右击WEB服务扩展——开启包含文件

三,设置完成,重启IIS

weinxin
扫一扫更精彩
大家的支持是我更新的动力!!!
广告也精彩
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定