Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将十六进制值转换为unicode字符_Javascript - Fatal编程技术网

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不适合我?