【问题标题】:Convert accented text into ASCII characters?将重音文本转换为 ASCII 字符?
【发布时间】:2014-03-18 00:33:55
【问题描述】:

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

éclair ~becomes~ eclair

bär ~becomes~ bar

привет ~becomes~ privet

こんにちは ~becomes~ konnichiva

正如您所见,这个想法是任何语言都可以转换为纯英语 ASCII 等价物。 áčçéñtèd 字母被转换成它们的普通等价物,西里尔文或日文编码的字母被转换成它们的音译等价物。

任何人都知道用 Javascript 实现这一点的方法吗?

【问题讨论】:

    标签: javascript node.js ascii transliteration


    【解决方案1】:

    有许多 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'
      

    【讨论】:

    • 谢谢,谷歌搜索节点 js 变音符号为劣质库提供了不完整的变音符号列表; node-unidecode 要好得多。
    【解决方案2】:

    结帐node-iconv

    看起来像 php iconv 的 node 等价物。

    【讨论】:

    • 漂亮!正是我需要的!
    • 如果您的问题能帮助您解决问题,请将其标记为“已回答”。
    【解决方案3】:

    作者在这里。你可以试试transliteration 模块。它可以在浏览器和node.js中运行,并且没有依赖关系

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 2014-04-29
      • 2013-10-04
      • 2012-04-13
      • 1970-01-01
      • 2012-12-16
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多