如何用Javascript判断一个字符串中是否存在任何UTF8字符?

9

我有一个字符串,类似于这样:"Xin chào tất cả mọi người"。在字符串中有一些Unicode字符。我想编写一个函数(使用JS),来检查是否至少存在一个Unicode字符。


3
JavaScript 字符串并不“包含 UTF-8”字符。它们包含 Unicode 代码点(对于 BMP 中的 Unicode,编码为一个代码点/字符 - 不管使用 UTF-16/UCS-2 内部编码是完全不同的问题)。那么,“UTF-8 字符”是什么意思呢?你是指 ASCII 平面之外的 Unicode 字符吗? - user2864740
2个回答

11

字符串是一系列字符,每个字符都有一个字符编码。 ASCII 定义了从 0 到 127 的字符,因此,如果字符串中的某个字符的编码大于此范围,则它是 Unicode 字符。此函数用于检查这一点。请参见 String#charCodeAt

function hasUnicode (str) {
    for (var i = 0; i < str.length; i++) {
        if (str.charCodeAt(i) > 127) return true;
    }
    return false;
}

然后像这样使用它,hasUnicode("Xin chào tất cả mọi người")

2
这里有一种使用正则表达式的不同方法。
function hasUnicode(s) {
    return /[^\u0000-\u007f]/.test(s);
}

1
性能结果会有所不同.. 而且你的代码没有检测到 à .. 你的正则表达式应该是 /[^\u0000-\u007f]/ :) - StefansArya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接