我想知道如何使用 Javascript 将 UTF-8 中的字符“翻译”为最接近的 ASCII 等价物,就像 PHP 中的 Iconv 一样。
例子:
ü 变成
了 ó 变成了 o
我宁愿不使用替换,因为a)它需要一组完整的字符,这需要大量工作,并且b)我很难获得一组完整的字符,而且我永远无法确定如果我缺少一两个。
我想知道如何使用 Javascript 将 UTF-8 中的字符“翻译”为最接近的 ASCII 等价物,就像 PHP 中的 Iconv 一样。
例子:
ü 变成
了 ó 变成了 o
我宁愿不使用替换,因为a)它需要一组完整的字符,这需要大量工作,并且b)我很难获得一组完整的字符,而且我永远无法确定如果我缺少一两个。
我发现的最简单的方法:
var str = "üó";
var combining = /[\u0300-\u036F]/g;
console.log(str.normalize('NFKD').replace(combining, ''));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
正如@Pointy 所说,您唯一的选择是根据字典映射/替换字符。
现在有一个iconv到JS的端口:https ://www.npmjs.com/package/iconv
var iconv = new Iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE');
iconv.convert('ça va が'); // "ca va "