Javascript编码检查器ASCII / UFT8

时间:2018-07-20 16:46:42

标签: javascript utf-8 character-encoding

是否可以使用JavaScript从PHP复制mb_detect_encoding我正在尝试重新创建类似的内容。

 isAscii("éton") //false
 isAscii("hello") //true

或者有没有办法检查字符串是否已经用utf-8编码?

1 个答案:

答案 0 :(得分:2)

由于所有ASCII字符都在\x00\x7F之间,因此您可以简单地使用RegEx测试字符串是否匹配该范围的字符。

RegEx将为/^[\x00-\x7F]*$/,并使用//.test()方法返回输入是否符合模式:

function isAscii(str) {
  return /^[\x00-\x7F]*$/.test(str);
}

console.log(isAscii("éton")) //false
console.log(isAscii("hello")) //true

正如@duskwuff所指出的那样,检查字符串是否包含非ASCII集合中的任何字符,然后返回与该结果相反的字符会更有效:

function isAscii(str) {
  return !/[^\x00-\x7f]/.test(str);
}

console.log(isAscii("éton")) //false
console.log(isAscii("hello")) //true

但是请注意,这不是编码,而是字符的来源集。