【问题标题】:UTF8 String not allowing charAt() or substring to pull out specific charactersUTF8 字符串不允许 charAt() 或子字符串提取特定字符
【发布时间】:2020-01-20 21:19:55
【问题描述】:

在我的代码中,我试图隔离变量的第一个字符,它是 UTF8 符号:???? 输出代码如下:

代码:

 console.log(login_name);
 console.log(login_name.charAt(0));
 console.log(login_name.substring(0,1));

输出:

 ???? ✨✨✨UTF8MB4
 �
 �

显然,我希望 .charAt() 打印 ????而不是�。我缺少任何已知的 utf8mb4 异常?我的主要问题是我不知道如何描述这个具体问题。

此外,如果我将彩虹换成/瞄准 ✨,它会正常运行并正确打印。

【问题讨论】:

标签: javascript string unicode


【解决方案1】:

JavaScript 无法正确处理 Unicode。 charAt() 对代码单元而不是代码点进行操作。

幸运的是,JavaScript 有解决方法。要获取字符串中的字符而不是 UTF-16/UCS-2 代码单元,您需要调用 Array.from(yourstring),这将为您获取字符数组。从那里你可以以通常的方式获取第一个元素。

let characters = Array.from(login_name);
console.log(characters.shift());

【讨论】:

    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2013-11-09
    • 2011-03-20
    相关资源
    最近更新 更多