拆分包含 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(''));
运行节点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(''));