2009-01-21 34 views
34

我不熟悉Javascript,並且正在尋找返回字符的UNICODE值的函數,並且在給定UNICODE值的情況下,返回字符串等效項。我確定有一些簡單的東西,但我沒有看到它。在JavaScript中爲Unicode值調用Asc()和Chr()的簡單方法是什麼?

實施例:

  • ASC( 「A」)= 65
  • CHR(65)= 「A」
  • ASC( 「ਔ」)= 2580
  • CHR(2580)= 「ਔ」
+3

那麼,它不會是ASC(),但UNI()。哈哈,今天早上我狀態很好:-)。 – paxdiablo 2009-01-21 01:23:20

回答

54

看一看:

String.fromCharCode(64) 

String.charCodeAt(0) 

首先必須呼籲字符串(字面String.fromCharCode...),並返回 「@」(64)。第二個應該在字符串實例(例如,"@@@".charCodeAt...)上運行,並返回第一個字符的Unicode代碼('0'是字符串中的位置,您可以通過更改字符串中的其他字符的代碼那到另一個數字)。

腳本片段:

document.write("Unicode for character ਔ is: " + "ਔ".charCodeAt(0) + "<br />"); 
document.write("Character 2580 is " + String.fromCharCode(2580) + "<br />"); 

給出:

 
Unicode for character ਔ is: 2580 
Character 2580 is ਔ 
+0

謝謝,這正是我尋找的功能! – Noah 2009-01-21 01:42:02

4

因爲JavaScript uses UCS-2 internallyString.fromCharCode(codePoint)不會爲補充Unicode字符的工作。例如,如果codePoint1195580x1D306,對於''字符)。

如果你想創建一個基於非BMP Unicode代碼點的字符串,你可以使用Punycode.js的實用功能,UCS-2字符串和UTF-16代碼點之間進行轉換:

// `String.fromCharCode` replacement that doesn’t make you enter the surrogate halves separately 
punycode.ucs2.encode([0x1d306]); // '' 
punycode.ucs2.encode([119558]); // '' 
punycode.ucs2.encode([97, 98, 99]); // 'abc' 

如果要獲取字符串中每個字符的Unicode代碼點,則需要將UCS-2字符串轉換爲UTF-16代碼點數組(每個代理對形成一個代碼點)。你可以使用Punycode.js的效用函數是:

punycode.ucs2.decode('abc'); // [97, 98, 99] 
punycode.ucs2.decode(''); // [119558] 
+0

其實,Javascript使用UTF-16編碼。如果你把更多的BMP放入它,並閱讀它,你會得到完全一樣的你放入。雖然你不會寫在它的文字處理器。 – Chad 2013-04-05 07:49:23

0

舉例這裏生成的字母排列:

const arr = []; 
for(var i = 0; i< 20; i++) { 
    arr.push(String.fromCharCode('A'.charCodeAt(0) + i)) 
} 
相關問題