Javascript 将十六进制值转换为unicode字符
我正试图通过以下方式将十六进制值Javascript 将十六进制值转换为unicode字符,javascript,Javascript,我正试图通过以下方式将十六进制值1f600,即笑脸表情符号转换为其字符表示形式: String.fromCharCode(parseInt("1f600", 16)); 但是这只会生成一个方形符号。JavaScript使用UTF-16,因此您需要获得U+D83D U+DE00——也就是String.fromCharCode(0xd83d,0xde00) 请注意,您可以使用0x#####而不是parseInt(“####”,16) 要将UTF-8位置转换为其UTF-16等效位置,请执行以下步骤
1f600
,即笑脸表情符号转换为其字符表示形式:
String.fromCharCode(parseInt("1f600", 16));
但是这只会生成一个方形符号。JavaScript使用UTF-16,因此您需要获得
U+D83D U+DE00
——也就是String.fromCharCode(0xd83d,0xde00)
请注意,您可以使用0x#####
而不是parseInt(“####”,16)
要将UTF-8位置转换为其UTF-16等效位置,请执行以下步骤:
var input = 0x1f600;
var code = input - 0x10000;
var high = (code >> 10) + 0xD800;
var low = (code & 0x3FF) + 0xDC00;
var output = String.fromCharCode(high, low);
大多数表情符号需要两个代码单元,包括那个代码单元
fromCharCode
以代码单位工作(允许JavaScript的“字符”(无效代理项对除外),而不是代码点(实际的Unicode字符)
在现代环境中,可以使用String.fromCodePoint
或仅使用Unicode代码点转义序列(\u{XXXXX}
,而不是用于代码单元的\uxxx
)。也不需要parseInt
:
console.log(String.fromCodePoint(0x1f600));
console.log(“\u{1f600}”)代码>使用fromCodepoint
函数而不是fromCharCode
String.fromCodePoint(0x1f600)
你的字体支持unicode吗?是的,它在Chrome中运行。那么我该如何从1f600转换到U+D83D U+DE00呢?@AndroidDev帮你搞定了。就是这样。我缺少0x,应该使用fromCodePoint而不是fromCharCode。万分感谢!请注意,这在旧浏览器中不可用,包括IE(任何版本)。如果这是一个问题,您需要一个polyfill\ud83d\ude42\ud83d\ude42\ud83d\ude42不适合我?