在JavaScript中为Unicode值调用Asc()和Chr()的简单方法是什么?

时间:2009-01-21 01:13:23

标签: javascript unicode

我不熟悉Javascript,并且正在寻找返回字符的UNICODE值的函数,并且给定UNICODE值,返回等效的字符串。我确信有一些简单的东西,但我没有看到它。

示例:

  • ASC(“A”)= 65
  • CHR(65)=“A”
  • ASC(“ਔ”)= 2580
  • CHR(2580)=“ਔ”

3 个答案:

答案 0 :(得分:65)

看看:

String.fromCharCode(64)

String.charCodeAt(0)

第一个必须在字符串(字面意思为String.fromCharCode...)上调用,并返回“@”(对于64)。第二个应该在String 实例上运行(例如,"@@@".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 ਔ

答案 1 :(得分: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]

答案 2 :(得分:1)

此处生成字母数组的示例:

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