这个问题讨论过很多次了,确实是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传输字串