将重音文本转换为ASCII字符?

Dmi*_*kin 7 javascript ascii transliteration node.js

我想在Javascript中将重音字母和各种编码转换成简单的英文ASCII格式,并想知道有哪些可能的选项.我需要的是:

éclair ~becomes~ eclair

bär ~becomes~ bar

?????? ~becomes~ privet

????? ~becomes~ konnichiva
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这个想法是将任何语言转换为简单的英语ASCII等效语言.áčçéñtèd字母被转换为它们的简单等价物,西里尔字母或日文编码的字母被转换成它们的音译等价物.

有人知道在Javascript中这样做的方法吗?

Han*_*-Oh 28

有许多Node模块做类似的事情,但比node-iconv轻得多,特别是在所有JS中,并且不要求你编译任何C或C++:

  1. 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'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 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('?????')
    ''
    
    Run Code Online (Sandbox Code Playgroud)
  3. 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('?????')
    '_____'
    
    Run Code Online (Sandbox Code Playgroud)
  4. 最后,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'
    
    Run Code Online (Sandbox Code Playgroud)