我正在寻找JavaScript
方式将字符串中的非ASCII
字符转换为最接近的字符,与PHP
iconv
函数的作用类似。例如,如果输入字符串为Rånades på Skyttis i Ö-vik
,则应将其转换为Ranades pa skyttis i o-vik
。我查看了phpjs
,但未包含iconv
。
是否可以在JavaScript中执行此类转换,如果是这样的话?
答案 0 :(得分:18)
我发现的最简单方法:
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
答案 1 :(得分:3)
这是因为iconv
是大多数i18n字符映射转换函数背后的本机编译UNIX实用程序。
除非您访问某些浏览器组件,否则在javascript
中找不到它。
编码是文档的一个属性,因此大多数javascript实现只是简单地忽略它。
你需要一个纯粹的js库来处理非重音字符串。最适合您需要的特定语言。
最简单的方法是通过一些翻译表甚至正则表达式替换。
就像这里:http://lehelk.com/2011/05/06/script-to-remove-diacritics/
答案 2 :(得分:0)
我建议使用Unicode软件包,它还会将希腊字母和西里尔字母映射到最接近的ascii符号:
unidecode('Lillı Celiné Никита Ödipus');
'Lilli Celine Nikita Odipus'