Преобразовать акцентированный текст в символы ASCII?
Я хотел бы конвертировать акцентированные буквы и различные кодировки в простой английский ASCII в Javascript и удивляться, каковы возможные варианты. Что мне нужно, это что:
éclair ~becomes~ eclair
bär ~becomes~ bar
привет ~becomes~ privet
こんにちは ~becomes~ konnichiva
Как вы можете видеть, идея заключается в том, что любой язык конвертируется в простой английский ASCII-эквивалент. Буквы áčçéñtèd преобразуются в их простые эквиваленты, буквы в кириллическом или японском кодировании преобразуются в их транслитерированный эквивалент.
Кто-нибудь знает подход, чтобы сделать это в Javascript?
3 ответа
Существует целый ряд модулей Node, которые делают подобные вещи, но гораздо легче, чем node-iconv, и, в частности, присутствуют во всех JS и не требуют компиляции каких-либо C или C++:
узел-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-транслитератор даже легче, но ведет себя еще дальше от того, что вы просили:
$ 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('こんにちは') '_____'
Наконец, когда я сделал
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'
Оформить заказ узел-iconv.
Выглядит как эквивалент узла php iconv.
Автор здесь. Вы можете попробовать модуль транслитерации. Его можно запустить как в браузере, так и в node.js без каких-либо зависимостей