Alexey Pechnikov wrote: > Хорошо известный кроссплатформенный способ добавить в программу поддержку > юникода - использовать библиотеку libicu. С ней все работает, но... весит > это счастье более 10 мегабайт. В то же время тикль, питон и проч. > интерпретаторы имеют поддержку юникода, не используют эту либу и весят > значительно меньше. Вопрос: как они это делают? Явно есть какое-то более > легкое решение. > > P.S. Собранный с поддержкой русского языка (с помощью libicu) tksqlite > весит 9,1 Мб - и это упакованный в starpack. Ну, положим, в дебиане libicu > можно с собой не таскать, но как это не печально, существуют и другие > дистрибутивы и платформы.
ICU — это стрельба по воробьям межконтинентальной баллистической ракетой. Библиотека, первоначально написанная для Java и потом портированная для C++ и C. Большинство функций вряд ли понадобятся (некоторые довольно экзотические, как например запись чисел словами на разных языках). Что имеется ввиду под поддержкой уникода? Обычно требуется только: 1) Унифицированное представление текста на разных языках. Обычно UCS2, UCS4 или UTF-8. Иногда используют wchar_t и/или мультибайтовые строки. 2) Ввод/вывод в разных кодировках. Достаточно iconv или recode. Тикль и питон тащат свои таблицы перекодировки. Львиную долю тут занимают всякие китайские и японские кодировки, если очень жмёт, то можно сэкономить. 3) Определение класса символа (буква, цифра, пробел и т. п.), преобразование регистра. Для wchar_t есть стандартные локалезависимые функции в C99. Для уникода можно взять нетяжёлую libunicode. 4) Чисто уникодные функции. Комбинированные символы, названия каждого символа и т. п. Тут уже нужна специальная библиотека. И немаленькая. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org