以下最小代码创建一个包含狗表情符号和红心表情符号的字符串。然后它用爪子穿过绳子,显示第二个表情符号,即红心。为什么(在 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/