Где я могу начать с благоприятным для Unicode программированием в C?

Так, я работаю над плоскостью-C (ANSI 9899:1999) проект и пытаюсь выяснить, где начать ре: Unicode, UTF-8 и весь тот джаз.

А именно, это - проект интерпретатора языка, и у меня есть два основных места, где я должен буду обработать Unicode: чтение в исходных файлах (язык якобы поддерживает идентификаторы Unicode и такой), и в 'строковых' объектах.

Я знаком со всеми очевидными основами о Unicode, UTF-7/8/16/32 и UCS-2/4, таким образом, на и т.д … я главным образом ищу полезный, C-specific (то есть, никакой C++ или C#, который является всем, которое это было зарегистрировано здесь на ТАК ЖЕ ранее), ресурсы относительно моих ‘следующих шагов’ для реализации благоприятного для Unicode материала … в C.

Любые ссылки, страницы справочника, статьи Wikipedia, пример кода, все чрезвычайно приветствуются. Я также попытаюсь вести список таких ресурсов здесь в исходном вопросе для кого-либо, кто происходит через него позже.


8
задан 5 revs 23 May 2017 в 12:01
поделиться

3 ответа

Международные компоненты для Unicode предоставляет переносимую библиотеку C для обработки Unicode. Вот их шаг вперед для ICU4C:

Языки C и C ++ и многие среды операционных систем не обеспечивают полной поддержки Unicode и совместимых со стандартами служб обработки текста. Несмотря на то, что некоторые платформы действительно предоставляют хорошие службы обработки текста Unicode, переносимый код приложения не может их использовать. Библиотеки ICU4C восполняют этот пробел. ICU4C обеспечивает открытую, гибкую, переносимую основу для приложений, которые могут использоваться в соответствии с требованиями глобализации программного обеспечения. ICU4C внимательно следит за отраслевыми стандартами, включая Unicode и CLDR (Common Locale Data Repository).

10
ответ дан 5 December 2019 в 12:58
поделиться

Думаю, один из интересных вопросов - каким должен быть ваш канонический внутренний формат для строк? Два очевидных варианта (по крайней мере, для меня) - это

a) utf8 в ванильных c-строках b) utf16 в беззнаковых коротких массивах

В предыдущих проектах я всегда выбирал utf-8. Почему ; потому что это путь наименьшего сопротивления в мире Си. Все, с чем вы взаимодействуете (stdio, string.h и т.д.), будет работать нормально.

Далее - какой формат файла. Проблема здесь в том, что он виден вашим пользователям (если только вы не предоставляете единственный редактор для вашего языка). Здесь, я думаю, вы должны взять то, что они вам дают, и попытаться угадать, подглядывая (знаки порядка байтов помогают)

0
ответ дан 5 December 2019 в 12:58
поделиться

GLib имеет несколько функций Unicode и представляет собой довольно легкую библиотеку. Это не тот уровень функциональности, который предоставляет ICU, но может быть достаточно хорошим для некоторых приложений. Другие функции GLib также хороши для переносимых программ на C.

GTK + построен на основе GLib. GLib предоставляет фундаментальные алгоритмические языковые конструкции, которые обычно дублируются в приложениях. Эта библиотека имеет такие функции, как (этот список не является исчерпывающим):

  • Система объектов и типов
  • Главный цикл
  • Динамическая загрузка модулей (т.е. подключаемых модулей)
  • Поддержка потоков
  • Таймер поддержка
  • Распределитель памяти
  • Потоковые очереди (синхронные и асинхронные)
  • Списки (односвязные, двусвязные, двусторонние)
  • Хеш-таблицы
  • Массивы
  • Деревья (N-арные и двоичные сбалансированные )
  • Строковые утилиты и обработка кодировки
  • Лексический сканер и анализатор XML
  • Base64 (кодирование и декодирование)
3
ответ дан 5 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: