我正在寻找将字符串中的JavaScript
非ASCII
字符转换为最接近的等价物的方法,类似于PHP
iconv
函数的作用。例如,如果输入字符串是Rånades på Skyttis i Ö-vik
,则应将其转换为Ranades pa skyttis i o-vik
. 我看过phpjs
但iconv
不包括在内。
是否可以在 JavaScript 中执行这种转换,如果可以,如何?
我发现的最简单的方法:
var str = "Rånades på Skyttis i Ö-vik";
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
这是因为iconv
在大多数 i18n 字符映射转换函数后面是一个本地编译的 UNIX 实用程序。
javascript
除非您访问某些浏览器组件,否则您不会在其中找到它。
编码是文档的一个属性,所以大多数 javascript 实现只是简单地忽略它。
您需要一个纯 js 库来处理非重音字符串。最好为您需要的特定语言提供一个。
最简单的方法是通过一些翻译表甚至正则表达式替换。
喜欢这里: http: //lehelk.com/2011/05/06/script-to-remove-diacritics/
我会推荐Unicode包,它还会将希腊字母和西里尔字母映射到它们最接近的 ascii 符号:
unidecode('Lillı Celiné Никита Ödipus');
'莉莉席琳尼基塔奥狄浦斯'