Обработка массива char * в кодировке utf8

Файл содержит нелатинское содержимое и кодируется в UTF8.
В настоящее время существующий код используетfopen«, чтобы открыть файл, анализирует его и вызывает мой validate функция с нелатинским содержанием и передает данные как char*,

void validate(const char* str)
{
....
}

Я должен сделать некоторую проверку пройденного char массив.

Приложение использует Sun C++ 5.11 и который я думаю, что не поддерживает unicode, (Я гуглил поддержку Unicode в Sun C ++ 5.11, я не получил должных указателей о поддержке Unicode. Поэтому я написал простую программу для проверки, поддерживает ли Sun C ++ Unicode, и что программа не компилировалась).

Как мне сделать проверку на входе char*? Возможно ли использовать wchar_t?

0

Решение

Приложение использует <compiler> и который я думаю, что не поддерживает Unicode

Это не проблема. Вам нужна только поддержка компилятора для Unicode для встраивания строковых литералов Unicode в код или для символов с фиксированной шириной для представления UTF-16 или UTF-32. Ваш Unicode — UTF-8 и поступает от пользователя, поэтому поддержка компилятора Unicode не требуется.

Как мне сделать проверку на входе char*?

Стандартная библиотека C ++ имеет очень мало инструментов для обработки юникода. Предоставленные инструменты в основном состоят из преобразования между различными форматами Юникода, и даже эти инструменты не были доступны до C ++ 11.

Ввод и вывод — это в основном копирование байтов, поэтому для этого не требуется никакой значительной обработки. Для другой обработки (которая вам, вероятно, понадобится для «проверки») вам потребуется самостоятельно внедрить эти инструменты или использовать сторонние инструменты. Вам нужно будет обратиться к ~ 1000 страниц стандарта Unicode, если вы решите реализовать себя: http://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf

Возможно ли использовать wchar_t?

wchar_t является собственным типом широких символов, используемым для кодирования собственных широких символов системы. UTF-8 не использует широкие кодовые единицы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]