将数字转换为 Unicode 符号

问题描述 投票:0回答:3

我必须把从 A 到 Z 的字母分别打印出来。所以我尝试了以下方法:

for(var i = 65; i < 91; i++) {
     $('#alphabet').append('<div class="letter">' + '%' + i + '</div>');
}

我的想法是使用字母的十进制数字(例如:65 - A)通过循环轻松打印它们。这是可能的还是我必须使用数组?

致以诚挚的问候。

javascript jquery unicode numbers letter
3个回答
11
投票

您可以使用String.fromCharCode将字符代码转换为字符串。


2
投票

对于此用途(打印从 A 到 Z 的字母),

String.fromCharCode
就足够了;但是,问题标题指定了 Unicode。如果您想要转换 Unicode 代码(如果您是通过搜索来到这里的,则可能会),您需要使用
String.fromCodePoint

注意,此功能是 ES6/ES2015 中的新功能,您可能需要使用转译器或 polyfill 才能在旧版浏览器中使用它。


0
投票

String.fromCharCode

[...Array(91-65)].map((_, i)=>console.log(String.fromCharCode(i+65)))

String.fromCharCode(...codes: number[]): string
UTF-16 代码单元的数字序列。

因此,对于大于 0xFFFF 的 Unicode 代码点,需要代理对(需要

U+D800 to U+DFFF (surrogates)
来显示它们。

您可以使用以下函数来实现此目的:

function fromCodePoint(codePoint) {
  if (codePoint > 0xFFFF) {
    codePoint -= 0x10000
    // const high = 0xD800 + (codePoint >> 10)
    // const low = 0xDC00 + (codePoint & 0x3FF) // 0x3FF 0011_1111_1111
    // return String.fromCharCode(high, low)
    return String.fromCharCode(
      0xD800 + (codePoint >> 10), 
      0xDC00 + (codePoint & 0x3FF)
    )
  }
  return String.fromCharCode(codePoint)
}

console.log(fromCodePoint(0x4E00))
console.log(fromCodePoint(0x1FA80)) // Yo-Yo // https://www.compart.com/en/unicode/U+1fa80

© www.soinside.com 2019 - 2024. All rights reserved.