代码之家  ›  专栏  ›  技术社区  ›  MathieuAuclair

javascript编码检查器ascii/uft8

  •  1
  • MathieuAuclair  · 技术社区  · 8 年前

    有复制的方法吗 mb_detect_encoding 从带javascript的PHP? 我正试图重现这样的东西。

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

    或者有没有一种方法来检查字符串是否已经用UTF-8编码?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Luca Kiebel    8 年前

    因为所有的ASCII字符都在中间 \x00 和 \x7F 您可以简单地测试字符串是否与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

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