35

我正在寻找将字符串中的JavaScriptASCII字符转换为最接近的等价物的方法,类似于PHP iconv函数的作用。例如,如果输入字符串是Rånades på Skyttis i Ö-vik,则应将其转换为Ranades pa skyttis i o-vik. 我看过phpjsiconv不包括在内。

是否可以在 JavaScript 中执行这种转换,如果可以,如何?

4

3 回答 3

32

我发现的最简单的方法:

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

于 2014-05-13T14:20:05.100 回答
3

这是因为iconv在大多数 i18n 字符映射转换函数后面是一个本地编译的 UNIX 实用程序。

javascript除非您访问某些浏览器组件,否则您不会在其中找到它。

编码是文档的一个属性,所以大多数 javascript 实现只是简单地忽略它。

您需要一个纯 js 库来处理非重音字符串。最好为您需要的特定语言提供一个。

最简单的方法是通过一些翻译表甚至正则表达式替换。

喜欢这里: http: //lehelk.com/2011/05/06/script-to-remove-diacritics/

也检查这个线程:Replaceing diacritics in Javascript

于 2012-08-06T19:58:48.163 回答
3

我会推荐Unicode包,它还会将希腊字母和西里尔字母映射到它们最接近的 ascii 符号:

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

'莉莉席琳尼基塔奥狄浦斯'

于 2020-04-22T21:01:24.180 回答