前几天写了一个JS的幻灯片效果,今天使用的时候,发现了一个郁闷的问题,把JS包含在静态HTML文件中,一切正常,但是一包含在动态ASPX文件中就抱一些莫名奇妙的错误,把我郁闷的不行了。
后来百度到了linus zhu的博客,终于把问题解决了。

产生原因

       Asp.netweb.configglobalization Section默认配置的是responseEncoding字符集为UTF-8,而我们一般存储JS文件的字符集为GB2312.

在客户端没有指定IE使用GB2312去解码JS文件,IE默认采用了和传到客户端Html代码一样的编码(UTF-8)来解析JS文件,造成无法正确解析中文的问题.

这就是为什么对于同一个JS文件来说,includeHtml文件客户端不会报错,includeAspx就可能报错.

解决方法

       对于上述情况有几种解决方法:

方法一 在引用JS文件的地方加入Charset,如下:

<script language="javascript" src="test.js" charset="gb2312"></script>

方法二 改变web.config globalizationresponseEncoding,(此方法对于国际化的应用程序不好),如下:

<globalization requestEncoding="GB2312" responseEncoding="GB2312"   />

方法三 修改JS文件存储的编码方式,VS.net选择
File->Advanced save options->Encoding
选择GB2312


原文作者:linus zhu
原文地址:http://ms.mblogger.cn/linuszhu/posts/12417.aspx

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3