BMP是基本的多语言平面
根据JavaScript:好的部分:
JavaScript是在16位字符集的时候构建的,因此JavaScript中的所有字符都是16位宽.
这让我相信JavaScript使用UCS-2(不是UTF-16!)并且只能处理U + FFFF以前的字符.
进一步调查证实了这一点:
> String.fromCharCode(0x20001);
Run Code Online (Sandbox Code Playgroud)
fromCharCode返回Unicode字符时,该方法似乎只使用最低16位.试图获得U + 20001(CJK统一表意文字20001)而不是返回U + 0001.
问题:是否可以在JavaScript中处理后BMP字符?
2011-07-31:来自Unicode支持Shootout的第 12个幻灯片:好的,坏的,以及(大部分)Ugly很好地解决了与此相关的问题:

给定是具有表示表情符号的代码的输入字段.我现在想用相应的表情符号替换此代码.
我的想法是用unicode替换值,但这对我的输入不起作用.只有当我将表情符号本身复制到代码中时,替换才有效.
例:
给定代码:[e-1f60e],
转换:😎,
应该是:
我的问题:如何将给定的代码转换为JavaScript中的表情符号?
$("#tauschen").click(function() {
$('#blub').val(function(index, value) {
return value.replace('[e-1f60e]', '😎'); // Doesn't work
});
});
$("#tauschen2").click(function() {
$('#blub2').val(function(index, value) {
return value.replace('[e-1f60e]', ''); // Works - but how to convert the given string to an emoji?!
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
Given are strings in an imout field like these, representing an emoji: <strong>[e-1f60e]</strong> </p>
<p>
Now I want to display them "live" as emojis, instead of only the code: 😎 …Run Code Online (Sandbox Code Playgroud)例如,我有这个表情符号:
Run Code Online (Sandbox Code Playgroud)
...我想得到你的字符代码。我试过这个:
但是当使用String的fromCharCode方法时,我没有得到原始的表情符号:
var emoji = ""
var char_code = emoji.charCodeAt()
console.log(emoji,char_code)Run Code Online (Sandbox Code Playgroud)
如何从您的字符代码中获取原始表情符号?否则我怎样才能让你的实际字符代码在其中使用它String.fromCharCode?
当我尝试使用字符串模板生成表情符号时,出现错误。
如何达到这个目的?
Javascript代码:
const unifiedValue = '1F60E';
const emoji = `\u{${ unifiedValue }}`;
Run Code Online (Sandbox Code Playgroud)
Javascript 错误:
SyntaxError:模板中的转义序列无效
当然,如果我直接使用该值,它会起作用,但这会很容易出错 + 具有数百个if条件的数千行代码。
开发者控制台:
'\u{1F60E}'
Run Code Online (Sandbox Code Playgroud)
控制台输出: “”