2

Кто-нибудь знает, почему iconv сохраняет акценты на cygwin? И если так, как я могу сказать, что нет.

[Nifle@cygwin ~]$ echo "ÅÄÖÕŨÉÁ" | iconv -f utf-8 -t ascii//TRANSLIT
A"A"O~O~U'E'A

Я хочу, чтобы он вел себя так же, как на моих Linux-серверах.

[NIfle@linux ~]$ echo "ÅÄÖÕŨÉÁ" | iconv -f utf-8 -t ascii//TRANSLIT
AAOOUEA

3 ответа3

4

старая проблема:

читать комментарии Кобылкина к этой теме ...

https://sourceware.org/bugzilla/show_bug.cgi?id=2872#c2

также

http://www.yqcomputer.com/422_10096_1.htm

Помните, что у Cygwin <1.7 нет локалей.

Но в вашем случае местный кажется хорошо интерпретированным ; это процесс Transliteration iconv на Cygwin, который решает преобразовать один символ в 2 (или даже больше) компонентов вместо одного; в вашем примере вы получите сам транслитерированный символ плюс модификатор транслитерированного символа (акцент, диерезис, тильда, точка и т. д.), если он присутствует.

Å   Ä   Ö   Õ   Ũ   É   Á
A  "A  "O  ~O  ~U  'E  'A

Transliteration:
When a character cannot be represented in the target character set, 
it can be approximated through one or several similarly looking characters
(https://www.gnu.org/software/libiconv/)

вы можете увидеть libiconv.dll translit.def, показывающий источник таблицы транслитерации (translit.h), созданной в процессе "make". Эта таблица показывает, что то, что делает Cygwin, на самом деле правильно.

0

Таблицы преобразования, которые использует Cygwin для iconv, отличаются от таблиц на вашем сервере Linux.

Если вы измените языковой стандарт для Cygwin на языковой стандарт сервера Linux, вы должны получить тот же результат преобразования.

-1

Cygwin может не использовать UTF-8, поэтому пытается отобразить один двухбайтовый символ UTF-8 как два однобайтовых символа ASCII.

Сделайте следующее:

  1. Зайдите в меню (если вы не видите меню, щелкните правой кнопкой мыши на вашем терминале).
  2. Нажмите Опции ...
  3. Нажмите « Текст».
  4. Установить локаль и набор символов

Поскольку у меня не установлен Cygwin, я не могу сказать, какие правильные значения.

См. Также статью Cygwin « Интернационализация - язык установки».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .