将重音文本转换为ASCII字符

Convert accented text into ASCII characters?

本文关键字:ASCII 字符 转换 文本      更新时间:2023-09-26

我想把重音字母和各种编码转换成Javascript中的普通英语ASCII编码,想知道有什么可能的选择。我需要的是:

éclair ~becomes~ eclair
bär ~becomes~ bar
привет ~becomes~ privet
こんにちは ~becomes~ konnichiva

正如您所看到的,其思想是任何语言都被转换成简单的英语ASCII等效。áčçéñtèd字母被转换成它们的普通对等体,西里尔字母或日文编码的字母被转换成它们的音译对等体。

谁知道在Javascript中做到这一点的方法?

有许多Node模块做类似的事情,但比Node -iconv要轻得多,特别是,它们在所有JS中都存在,不需要编译任何C或c++:

  1. node- unidcode似乎做了大部分你要求的:

    $ 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. 最后,max是更重量级的,当我做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'
    

结帐节点-图标。

作者在此。你可以试试音译模块。它可以在浏览器和node.js中运行,没有依赖