javascript - 为什么此代码显示不正确的 Unicode?

标签 javascript unicode

以下最小代码创建一个包含狗表情符号和红心表情符号的字符串。然后它用爪子穿过绳子,显示第二个表情符号,即红心。为什么(在 Firefox 上)显示的是黑心?

var u='\ud83d\udc0e\u2764';
var count=0;
for (let point of u)
    if (count++)
        alert(u+": "+point);

最佳答案

U+2764 HEAVY BLACK HEART 早于彩色表情符号,因此单独处理时它是一颗黑心。要使其变为红色,请使用 U+FE0F VARIATION SELECTOR-16 连接它,例如:

var u='\ud83d\udc0e\u2764\ufe0f';

但是,您的 for 循环会忽略 \ufe0f 并且仍然只显示 \u2764 本身,因为它们是单独的代码点。

调整循环以查看 u 之后的下一个代码点,如果它是变量选择器,则将其包括在内:

alert("\u2764"); // black heart
alert("\u2764\ufe0f"); // red heart

关于javascript - 为什么此代码显示不正确的 Unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57796159/

相关文章:

c++ - 如何在 rc 文件中设置对话框代码页

javascript - 无法使用 jquery 选择器访问输入

javascript - 如何在 IE8 中禁用 body.blur()?

python - 使用 unicode 字符 u201c

unicode - 仅在提示符下执行时才出现 sbcl 编码错误?

unicode - 组合字符可以在 Unicode 中单独使用吗?

python - 尝试解析列表中的 json 字典以创建 sqlite 数据库

Javascript 访问嵌套元素

javascript - gulp.watch 进入无限循环

javascript - 如何在不破坏浏览器支持的情况下将 hashbang 添加到可执行的 Javascript 文件?