что такое (некоторые из) строковые функции UTF8 в C - PullRequest
1 голос
/ 07 января 2012

Для работы с ASCII у нас есть strlen, strcat и т. Д. Для UTF16 (то есть, UCS2) у нас есть wcscat и wcslen функции.

Для работы с UTF8 и UCS4, какие функции доступныв С?Предположим, Linux / gcc

Ответы [ 2 ]

3 голосов
/ 07 января 2012

Стандарт не определяет кодировку или размер, используемые для функций широких символов, поэтому предполагается, что это UCS2, UCS4 или что-либо еще, не является переносимым.C11 обеспечивает стандартизированную поддержку юникода, но я думаю, что пока рано полагаться на то, что реализовано.Лучше всего найти библиотеку для обработки конвертации в / из UTF8 / UCS4 или любую другую кодировку, которая вам может понадобиться.

Посмотрите iconv или главу обработка символов в руководстве по библиотеке GNU C.

3 голосов
/ 07 января 2012

Я не думаю, что стандартные библиотеки C имеют функции UTF-8.Для этого, безусловно, есть библиотеки.

Однако во многих случаях с UTF-8 можно использовать обычные функции str.
strlen работает хорошо, возвращая количество байтов (не символов).strcat работает (также легко заполняет ваш буфер, но это нормально для strcat).

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

...