Javascript 中文字符串處理額外注意事項
更新時間:2009年11月15日 01:29:22 作者:
javascript文件中的字符常量與所在的js文件字符編碼密切相關(guān),如下一段代碼
var strSex="男" ;
在GB2312編碼中,假設(shè)有另一變量strAxSex是從ActiveX控件中讀出的BSTR值,原始值也是"男" ,這時做在javascript程序中做比較:strSex==strAxSex為false,也就是"男"!="男"。
但如果從VS2005調(diào)試中看表達(dá)式 strSex==strAxSex則為true,細(xì)看strSex.charCodeAt(0)與strAxSex.charCodeAt(0)也是相等的,而strSex.charCodeAt(0)與strAxSex.charCodeAt(0)也相等都為NaN。
再注意看vs2005變量值提示,可以看到strSex="□□“。原來是字符常量非unicode,導(dǎo)致strSex所賦值不同于"男"的unicode值。嘗試把js文件另存為編碼utf-8,再次運行,終于 strSex==strAxSex為true,程序運行與調(diào)試器表現(xiàn)一致,和日常邏輯也一致了。
在GB2312編碼中,假設(shè)有另一變量strAxSex是從ActiveX控件中讀出的BSTR值,原始值也是"男" ,這時做在javascript程序中做比較:strSex==strAxSex為false,也就是"男"!="男"。
但如果從VS2005調(diào)試中看表達(dá)式 strSex==strAxSex則為true,細(xì)看strSex.charCodeAt(0)與strAxSex.charCodeAt(0)也是相等的,而strSex.charCodeAt(0)與strAxSex.charCodeAt(0)也相等都為NaN。
再注意看vs2005變量值提示,可以看到strSex="□□“。原來是字符常量非unicode,導(dǎo)致strSex所賦值不同于"男"的unicode值。嘗試把js文件另存為編碼utf-8,再次運行,終于 strSex==strAxSex為true,程序運行與調(diào)試器表現(xiàn)一致,和日常邏輯也一致了。
您可能感興趣的文章:
相關(guān)文章
JavaScript其他類型的值轉(zhuǎn)換為布爾值的規(guī)則詳解
在JavaScript中,所有的值在邏輯上下文中都會被轉(zhuǎn)換為布爾類型(Boolean),理解這些轉(zhuǎn)換規(guī)則對開發(fā)者來說至關(guān)重要,尤其是在條件判斷、短路運算、邏輯非(!)等場景下,正確掌握布爾轉(zhuǎn)換可以避免潛在的bug,本文將詳細(xì)介紹 JavaScript 其他類型的值是如何轉(zhuǎn)換為布爾值的2025-04-04
IE7中javascript操作CheckBox的checked=true不打勾的解決方法
在IE7下,生成的Checkbox無法正確的打上勾。 原因是 chkbox控件還沒初始化(appendChild),就開始操作它的結(jié)果2009-12-12

