- Хроники. - -

Unidecode Sharp. ASCII транслитерация для .NET

Posted By Ikutsin On 7 мая 2010 @ 20:12 In .NET C#,Авторские утилиты | Comments Disabled

Дошли руки перенести таблицу Unidecode для работы с C#. Скачать ее можно с Codeplex [1]. Изначально, unidecode был написан на Perl [2], разработка которого, прекратилась на версии 0.04. Бесконечно ценной остается таблица переводов, поекывающая практически весь уникод. По этому, этот код был портирован на разные языки программирования: Python, PHP, Ruby и теперь — .NET.
Решение реализовано как метод расширения String.Unidecode() Работает он следующим образом:

("\u5317\u4EB0").Unidecode() == "Bei Jing "

Точно, также работает и с кириллицей:

Assert.AreEqual("Rabota s kirilitsiei", "Работа с кирилицей".Unidecode());

Транслитерация помогает в тех случаях, если программа с которой вы контактируете не поддерживает Unicode. До недавних пор это был, например URL, но и сейчас проблема сохраняется для многоязычных сайтов (URL на латинице выглядит понятней, чем, иероглифы или кириллица, для человека, не знакомого с жтими языками. Вместо того чтобы показывать знаки вопроса («?») или hex последовательности можно осуществить перевод в латиницу.
Транслитерация может быть выполнена только в одну сторону. 65535 символов могут превратится в 255 — но не наоборот. Таблица отлично работает на большинстве языков, однако, как говорит автор проекта на Perl, тексты на японском и тайском — могут быть искажены. Это связанно с лингвистической составляющей языка.

Скачать библиотеку и исходной код:
Версия 0.04 [3] — взята из той-же версии реализации на Python.


Article printed from Хроники.:

URL to article: /1451-unidecode-sharp-ascii-transliteraciya-dlya-net

URLs in this post:

[1] Codeplex: http://unidecode.codeplex.com/

[2] Perl: http://search.cpan.org/~sburke/Text-Unidecode-0.04/

[3] Версия 0.04: http://unidecode.codeplex.com/releases/view/44945

Copyright © 2008 Все, что меня окружает. All rights reserved.