将非ASCII字符(变音符号,重音符号...)转换为最接近的ASCII等效符号(段塞创建)

时间:2012-08-05 11:04:47

标签: javascript character-encoding ascii converter slug

我正在寻找JavaScript方式将字符串中的非ASCII字符转换为最接近的字符,与PHP iconv函数的作用类似。例如,如果输入字符串为Rånades på Skyttis i Ö-vik,则应将其转换为Ranades pa skyttis i o-vik。我查看了phpjs,但未包含iconv

是否可以在JavaScript中执行此类转换,如果是这样的话?

3 个答案:

答案 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/

也检查这个帖子:Replacing diacritics in Javascript

答案 2 :(得分:0)

我建议使用Unicode软件包,它还会将希腊字母和西里尔字母映射到最接近的ascii符号:

unidecode('Lillı Celiné Никита Ödipus');

'Lilli Celine Nikita Odipus'