在ASP.NET页面中经常需要链入一些JS文件,如:
如果在JS里有中文的话,在一般情况下,在浏览器里会报错脚本错误.
如果不信可以自己试一试。
其实是这样的:
由VS.NET自动生成的项目里,Web.Config中有这么一段:
< globalization requestEncoding ="utf-8"
responseEncoding ="utf-8"
/ >
它定义了该应用发送和接收的流都以utf-8 来编码。
然而问题就出在这里,由于我们大家使用的都是中文版的Windows,中文版的VS.NET,所以保存文件的默认编码都是 gb2313 ,所以当ASP.NET把JS文件发送到客户端时,就会发生编码的错误,从而导致发送了不正确的脚本代码到客户端。
解决的方法很简单,把Web.config里的编码定义改为gb2312即可。
补充:
js文件中escape 方法处理编码
对 String 对象编码以便它们能在所有计算机上可读,
escape(
charString
)
必选项 charstring 参数是要编码的任意 String 对象或文字。
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他 非 ASCII 字符都用 % xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。
字符值大于 255 的以 %u xxxx 格式存储。
注意 ? escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。
在 ASP.NET中要支持UTF-8您必须要将web.config中的语系设定,设为支持UTF-8
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
另外在数据库的部份也必须改使用支持 Unicode的资料格式,如nvarchar、ntext等。
资料在传送上建议使用POST的方式传送资料,如果要使用QueryString的方式传送,最好要加上Server.UrlEncode
如果页面上一部份文字编码正常,一部份文字的编码却出现问题,如 Label 上的文字正常,而 textbox 上的文字却变成乱码。除了上述设定外每一支 aspx 的存盘编码方式最好也一致,都是使用 UTF-8 的编码方式