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

时间:2014-03-18 00:33:55

标签: javascript node.js ascii transliteration

我想将重音字母和各种编码转换为Javascript中的普通英文ASCII编码,并想知道可能的选项有哪些。我需要的是:

éclair ~becomes~ eclair

bär ~becomes~ bar

привет ~becomes~ privet

こんにちは ~becomes~ konnichiva

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

任何人都知道在Javascript中这样做的方法吗?

3 个答案:

答案 0 :(得分:27)

有许多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'
    
  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('こんにちは')
    ''
    
  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('こんにちは')
    '_____'
    
  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'
    

答案 1 :(得分:2)

结帐node-iconv

看起来像php iconv的节点。

答案 2 :(得分:0)

作者在这里。您可以尝试transliteration模块。它既可以在browser.js中运行,也可以在没有依赖项的情况下运行