Дошли руки перенести таблицу 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? (2)
- 18 декабря 2008 -- Транслитерация RUS 2 LAT на C# (22)
- 30 июля 2010 -- DLR 1.0 на примере IronPython 2.6 (0)
- 12 января 2012 -- Генерация строк перебором букв. (4)
- 19 сентября 2010 -- StringTemplate на C#. (Часть 1) (0)
28 декабря, 2010 at 11:39
Привет, я тут чутка допилил твой порт, чтобы он кирилицу транслитерировал по ГОСТу.
Могу залить изменения на кодплекс.
28 декабря, 2010 at 21:49
да, конечно, свяжусь с вами по мейлу, чтобы дать доступ.