Есть ли простой пример iconv транслитерации от языка к языку для c? - PullRequest
2 голосов
/ 02 декабря 2010

Скажем, у нас есть простой сценарий, строка языка, скажем, французский.

И мы хотим, чтобы французский переводился в ASCII в транслитерированной форме.

Как это можно сделать в C самым простым способом?

И есть ли совершенно другой способ, не имеющий отношения к iconv, в идеале мультиплатформенный?

1 Ответ

3 голосов
/ 02 декабря 2010

Если вы хотите мультиплатформенность, iconv не правильный инструмент. Транслитерация - это расширение, специфичное для GNU. В общем, транслитерация - сложная проблема, и реализация GNU iconv достаточна только для тривиальных случаев. То, как не-ASCII-символ транслитерируется, является не свойством символа, а языком текста и тем, как он используется. Например, должно ли "日" становиться "ри" или "ни" или чем-то еще целиком? Или, если вы хотите придерживаться латинского языка, должно ли «ö» стать «o» или «oe»? Расширяясь на другие нелатинские сценарии, транслитерация большинства индийских языков довольно проста, но транслитерация тайского требует некоторого переупорядочения символов, а транслитерация тибетского требует анализа целых слогов и определения того, какие буквы находятся в корне / префиксе / суффиксе / и т.д. ролей.

На мой взгляд, лучший ответ на вопрос "Как мне транслитерировать в ASCII?" для большинства программ : не . Вместо этого исправьте все ошибки или намеренно-ориентированные на английский политики, которые изначально заставили вас хотеть ASCII. Единственное программное обеспечение, которое действительно должно выполнять транслитерацию, - это программное обеспечение с высокой лингвистической осведомленностью, облегчающее поиск или интерпретацию текстов не на родном языке пользователя.

...