分割一个包含UTF-8字符 "叱 "的字符串。

问题描述 投票:0回答:1

在node 14.3.0中运行以下代码

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

返回

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

为什么叱字不能正确分割?我已经测试了所有的 壮游,而这个字符是唯一产生这个结果的。

javascript string cjk
1个回答
1
投票

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

所以在你的例子中,你可以使用 Array.from 或数组扩展语法。

另外RegEx也有unicode的u选项。 我也加入了这个选项...

例如

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

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

1
投票

使用""而不是"𠮟",是同一个字。

const data = 'ABCDE叱漢字でも大丈夫';
console.log(data);
console.log(data.split(''));
© www.soinside.com 2019 - 2024. All rights reserved.