ascii160 和 ascii32 的區別

http://blog.163.com/wangruiwangrui8@126/blog/static/1227318820098118232064/

ascii160 和 ascii32 的區別  

2009-09-11 20:23:20|  分類: javascript |字號 訂閱

       好久沒有寫點東西了,忙得都沒時間去寫。但是今天遇到一個問題,頭疼了好一陣子,不過還好,最終還是找到問題的,感覺這個問題還有些的必要,在百度裏查了很多關於這個的關鍵字,都沒有查到,只有在google裏簡單的找到一些,所以想把這個記錄下來,共大家分享。

       大家都知道一個ascii碼會對應一個字符,比如ascii碼97表示a(注意是小寫)等,但是平時大家都很少注意到ascii碼裏有連個空格(space), 一個是ascii碼32,一個是ascii碼160,那麼這個兩個都表示空格有什麼區別呢。

       要說它們的卻別,其實主要是是在IE和firefox的區別,說的再多,還是通過一個簡單的例子來說明問題更直接了當。今天遇到一個Bug,以前運行的時候都沒問題,都是升級後就出現問題了,我的代碼都沒有變過。

      有一段代碼,是從別人的javascript code裏返回個值,然後判斷這個:

      if (attrBMCType == "Early Commit") {}

      就這個簡單的判斷,正常情況下,attrBMCType會返回"Early Commit", if條件應該爲true,在firefox裏測試的時候沒有問題,但是換到用IE測試的時候就出新問題了,alert(attrBMCType), 發現在firefox里正常顯示,但是在IE裏卻顯示"EarlylCommit",奇怪,空格跑那裏去了.原理是ascii碼惹的禍。

      讓我們來做另一個實驗。javascipt裏,String.fromCharCode()方法,會根據unicode字符返回一個字符串(這個也是在網上搜了好久才搜到的),我們就用這個方法來看看會有什麼卻別。

     var test = String.fromCharCode(112, 160, 108, 97, 32, 105, 110);

       同樣的javascript代碼,在firefox返回"p la in", 但是在IE裏卻返回"pla in",看到這裏我想大家已經看到區別來了。然後再查查ascii碼對照表,會發現ascii160和ascii32都表示空格,但是在IE裏,160就不是顯示空格,firefox裏會顯示空格,32不管是firefox裏,還是IE裏都顯示空格。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章