拆分包含 UTF-8 字符“叱”的字符串

Splitting a string containing the UTF-8 character "叱"

运行节点14.3.0中的以下代码

const data = 'ABCDE漢字でも大丈夫';
console.log(data);
console.log(data.split(''));

returns

ABCDE漢字でも大丈夫
[
  'A',  'B',  'C',  'D',
  'E',  '�',  '�',  '漢',
  '字', 'で', 'も', '大',
  '丈', '夫'
]

为什么骂字没有被正确分割?我已经测试了所有 jouyou kanji,这个字符是唯一产生此结果的字符。

Javascript 拆分,出现在 UTF-8 被广泛采用之前。但是为了防止破坏现有的应用程序,决定不改变它基于 UTF-16 的实现。幸运的是,最近的 ES 规范实现了 Array.from 来解决这个问题。

因此对于您的示例,您可以使用 Array.from 或数组展开语法..

另外,RegEx 也有用于 unicode 的 /u 选项。我也包括了..

例如

const data = 'ABCDE漢字でも大丈夫';
console.log([...data]);

console.log(data.match(/.{1}/ug));

用“”代替“”,都是一样的字符。

const data = 'ABCDE叱漢字でも大丈夫';
console.log(data);
console.log(data.split(''));