Javascript 编码检查器 ASCII/UFT8

标签 javascript utf-8 character-encoding

有没有一种方法可以使用 javascript 从 PHP 复制 mb_detect_encoding 我正在尝试重新创建类似的东西。

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

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

最佳答案

由于所有 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

但是请注意,这不是编码,而是字符来自哪个集合。

关于Javascript 编码检查器 ASCII/UFT8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447116/

相关文章:

java - Web 应用程序需要为 UTF-8 下载的文件提供适当的响应 header

c++ - Win32 API : GetLastError() with FormatMessage() prints a junk

javascript - 生成 RSA key 对客户端(在浏览器上)

JavaScript:如何在更改src后获取图像的高度

javascript - 替换字符串的每个备用空格

Codeigniter 似乎打破了 $_POST 的 '£' 字符(磅)

javascript - ASP.NET MVC 3 重写 Html.BeginForm

Swift 2.1 [UInt8] --utf8--> 字符串?

java - 构造URL查询字符串: character set encode/decode

MySQL 欧洲字符