我想将重音字母和各种编码转换为Javascript中的普通英文ASCII编码,并想知道可能的选项有哪些。我需要的是:
éclair ~becomes~ eclair
bär ~becomes~ bar
привет ~becomes~ privet
こんにちは ~becomes~ konnichiva
正如您所看到的,这个想法是将任何语言转换为简单的英语ASCII等效语言。 áčçéñtèd字母被转换为它们的简单等价物,西里尔字母或日文编码的字母被转换成它们的音译等价物。
任何人都知道在Javascript中这样做的方法吗?
答案 0 :(得分:27)
有许多Node模块做类似的事情,但比node-iconv轻得多,特别是在所有JS中,并且不要求你编译任何C或C ++:
node-unidecode似乎主要按照您的要求行事:
$ npm install unidecode
...
unidecode@0.1.3 node_modules/unidecode
$ node
> var unidecode = require('unidecode');
undefined
> unidecode('éclair')
'eclair'
> unidecode('bär')
'bar'
> unidecode('привет')
'priviet'
> unidecode('こんにちは')
'konnitiha'
node-transliterator的重量更轻,但表现得比你要求的更远:
$ npm install transliterator
...
transliterator@0.1.0 node_modules/transliterator
$ node
> var transliterator = require('transliterator');
undefined
> transliterator('éclair')
'eclair'
> transliterator('bär')
'baer'
> transliterator('привет')
''
> transliterator('こんにちは')
''
node-urlify距离您要求的距离稍近一些,但距离您要求的距离更远:
$ npm install urlify
...
urlify@0.3.5 node_modules/urlify
$ node
> var urlify = require('urlify').create({ spaces: ' ' });
undefined
> urlify('éclair')
'eclair'
> urlify('bär')
'bar'
> urlify('привет')
'privet'
> urlify('こんにちは')
'_____'
最后,limax更重要,当我npm install limax
它打印了很多C编译器警告,但它仍然有效并且最接近你的要求:
$ npm install limax
...
limax@0.0.2 node_modules/limax
├── speakingurl@0.9.1
├── pinyin2@2.0.8
├── hepburn@0.5.2 (bulk-replace@0.0.1)
└── cld@0.0.6
$ node
> var slug = require('limax')
undefined
> slug('éclair')
'eclair'
> slug('bär')
'baer'
> slug('привет')
'privet'
> slug('こんにちは')
'konnichiha'
答案 1 :(得分:2)
结帐node-iconv。
看起来像php iconv的节点。
答案 2 :(得分:0)
作者在这里。您可以尝试transliteration模块。它既可以在browser.js中运行,也可以在没有依赖项的情况下运行