Дошли руки перенести таблицу Unidecode для работы с C#. Скачать ее можно с Codeplex. Изначально, unidecode был написан на Perl, разработка которого, прекратилась на версии 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 – взята из той-же версии реализации на Python.
Метки:C#, OpenSource, авторские программы
Похожие статьи
- 12 марта 2009 -- ALT.NET или инструментарий Microsoft? (0)
- 18 декабря 2008 -- Транслитерация RUS 2 LAT на C# (11)
- 30 июля 2010 -- DLR 1.0 на примере IronPython 2.6 (0)
- 18 февраля 2009 -- Версия .NET сборки без блокирования файла. (0)
- 20 мая 2008 -- Open source проекты на C# .NET. (0)



Один комментарий в “Unidecode Sharp. ASCII транслитерация для .NET”
Trackbacks/Pingbacks
Ваше слово: