javascript文件中的字符常量與所在的js文件字符編碼密切相關,如下一段代碼:
var strSex="男" ;
在GB2312編碼中,假設有另一變量strAxSex是從ActiveX控件中讀出的BSTR值,原始值也是"男" ,這時做在javascript程序中做比較:strSex==strAxSex為false,也就是"男"!="男"。
但如果從VS2005調試中看表達式 strSex==strAxSex則為true,細看strSex.charCodeAt(0)與strAxSex.charCodeAt(0)也是相等的,而strSex.charCodeAt(0)與strAxSex.charCodeAt(0)也相等都為NaN。
再注意看vs2005變量值提示,可以看到strSex="□□“。原來是字符常量非unicode,導致strSex所賦值不同于"男"的unicode值。嘗試把js文件另存為編碼utf-8,再次運行,終于 strSex==strAxSex為true,程序運行與調試器表現一致,和日常邏輯也一致了。
上一篇 如何通過百度聯盟的網站驗證(圖)