You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将Unicode码点转换为表情符号/符号/字符?

解决Unicode高码点转字符的问题

你的代码失效的原因是:String.fromCharCode() 仅支持U+0000到U+FFFF范围内的Unicode基本多语言平面(BMP)字符,而像U+1F1FA这类属于增补平面的字符(码点超过0xFFFF),用这个方法无法正确解析,会返回乱码或错误字符。

正确解决方案

使用String.fromCodePoint()方法,它专门支持处理所有Unicode码点(包括增补平面):

  1. 单个码点转换示例:
// 先去掉"U+"前缀,再转十六进制数值
const codePoint = "U+1F1FA".replace("U+", "");
const char = String.fromCodePoint(parseInt(codePoint, 16));
console.log(char); // 🇺🇦
  1. 处理多个码点(比如你的国旗emoji例子):
const codePointsStr = "U+1F1FA U+1F1F8";
// 分割成单个码点字符串,逐个处理后拼接
const chars = codePointsStr.split(" ")
  .map(cp => String.fromCodePoint(parseInt(cp.replace("U+", ""), 16)))
  .join("");
console.log(chars); // 🇺🇸

兼容性说明

String.fromCodePoint()在ES6及以上版本支持,现代浏览器和Node.js都已兼容。如果需要兼容极旧环境,可以手动实现代理对转换,但日常开发用fromCodePoint足够。

内容的提问来源于stack exchange,提问作者mudit_sen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:33:24