[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Возможна ли поддержка тиклем юникода?



Alexey Pechnikov wrote:
> В сообщении от Sunday 18 January 2009 19:35:08 Serhiy Storchaka
> написал(а):
>> Alexey Pechnikov wrote:
>> > А где в системе библиотека для работы с юникодом? Рекомендованной вами
>> > libunicode в дебиане нет.
>>
>> Как это нет? Пакеты libunicode0 и libunicode-dev.
> 
> Таких пакетов нет. На хосте с ленни:

В этче есть.

>> > Еще вопрос по последней - в ней используется
>> > utf-16, хотя хотелось бы работать со стандартным для линукса utf-8,
>>
>> Есть и UTF-8, и UTF-16, и UTF-32, разных эндингов, и конвертация в другие
>> кодировки (неплохая компактная переносимая альтернатива iconv получается,
>> как я погляжу).
> 
> Все операции выполняются с utf-16. Это что же, конвертить в utf16 и
> обратно при каждом преобразовании? Стандарт в линуксе это utf-8.

Нет, функции работают преимущественно с UTF-32 или UTF-8. Откуда UTF-16?

>> В этой библиотеке нет функции сравнения строк. Для правильного сравнения
>> похоже и нужны мегабайты libicu.
> 
> Зачем она тогда нужна? unaccent делать не умеет, сравнивать не умеет...

Уникодные аналоги ctype.h, плюс кое-какие функции для работы с UTF-8, плюс
конвертация.

Если не смущает зависимость от локали и переносимость за пределы линукса, то
всё это делается стандартными функциями C99 для работы с широкими и
многобайтовыми символами (man -k multibyte wide-character 'wide character')
и iconv. В линуксе, кстати, представление wchar_t будет совпадать с UTF-32.

> Возвращаясь к вопросу - какую стандартную либу дебиана брать для работы с
> юникодом? Нужно преобразование регистра,

towlower, towupper, wctrans+towctrans.

> удаление акцента,

libunac, возможно wctrans+towctrans.

> сравнение  
> (согласен на базовый юникодное, хотя возможность указания кодовой страницы
> будет полезна).

wcscmp, strcmp строк в UTF-8.



Reply to: