2012-04-09 64 views
3

我有一個包含Javascript文件的HTML。這個腳本包含一個特殊的字符,ASCII 152.當我嘗試顯示charCodeAt時,我得到了不同的結果,但從來沒有正確的。你能諮詢一下嗎?使用ANSI編碼ASCII> 128的字符在Javascript中未正確讀取

function d(a) 
{ 
a=(a+"").split(""); 
alert(a[1].charCodeAt(0)); 
}; 
d("i˜g"); // Note that ˜ is 152 in ASCII 
  • 的test.html具有x-用戶定義的字符集感謝

    的test.html

    <script type="text/javascript" charset=SEE BELOW src="test.js"> 
    </script> 
    

    TEST.JS文件:警報顯示63384。使用%63232的作品,因爲每個char> 128顯示爲63232 + char。

  • test.html中使用UTF-8字符集:警報顯示65533.所有字符> 128顯示爲65533.
  • 的test.html與Windows-1252字符集:警報顯示752.我找不到ASCII和什麼之間的關係被展示。

用UTF-8編碼

function d(a) 
{ 
a=(a+"").split(""); 
alert(a[1].charCodeAt(0)); 
}; 
d("i[x98]g"); // Note that x98 is 152 
  • 的test.html具有x-用戶定義的字符集TEST.JS文件:警報顯示65533.所有字符> 128被顯示爲65533。
  • 的test.html使用UTF-8字符集:警報顯示65533.所有字符> 128被顯示爲65533.
  • 的test.html與Windows-1252字符集:警報顯示65533.所有字符> 128被顯示爲65533。
+2

有一個在範圍127-255沒有字符UTF8和ASCII在127在位置'結束...此外字符1'在''我[x98] g「'是'」[「' – Esailija 2012-04-09 08:38:46

+0

」〜「不在我知道的任何編碼的位置152。 – deceze 2012-04-09 08:45:08

+0

請參閱www.ascii-code.com(ASCII擴展) – Arturo 2012-04-09 10:17:03

回答

5

有用於UTF8範圍128-255沒有字符,和ASCII在127完全結束...又在1位置在"i[x98]g"字符是"[",所述"[x98]"是無意義的。

您的功能可以用str.charCodeAt(1)替換。

字符˜Unicode Character 'SMALL TILDE' (U+02DC和可以寫爲"\u02DC",或String.fromCharCode(732)

+1

附加信息:[charCodeAt()](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/字符串/ charCodeAt)與Unicode一起工作,並不關心ASCII。 – 2012-04-09 09:01:05

+0

對不起,我的意思是ASCII擴展。如下所示,152是'〜' http://www.ascii-code.com/ [x98]是一個字符。 Notepad ++代表UTF-8中的152個字符。十六進制中的98是152. – Arturo 2012-04-09 10:12:11

+0

謝謝大家。然後我重新提出我的問題。我想在TEST中寫一個代表整數152的字符。JS作爲d()的參數,所以當我運行這個函數時,alert顯示152.我打開使用任何編碼。 – Arturo 2012-04-09 10:16:12

0

ASCII只有127個字符。焦炭152是不存在的

+0

對不起,我的意思是ASCII EXTENDED。如下所示,152是'〜' http://www.ascii-code.com/ – Arturo 2012-04-09 10:08:19