Я пытаюсь использовать библиотеки ICU для проверки, имеет ли строка недопустимые символы UTF-8. Я создал конвертер utf-8, но никакие недопустимые данные не дают мне ошибку при преобразовании. Ценю вашу помощь.C++ проверить, имеет ли строка действительные символы utf-8
Спасибо, Prashanth
int main()
{
string str ("AP1120 CorNet-IP v5.0 v5.0.1.22 òÀ MIB 1.5.3.50 Profile EN-C5000");
// string str ("example string here");
// string str (" ����������" );
UErrorCode status = U_ZERO_ERROR;
UConverter *cnv;
const char *sourceLimit;
const char * source = str.c_str();
cnv = ucnv_open("utf-8", &status);
assert(U_SUCCESS(status));
UChar *target;
int sourceLength = str.length();
int targetLimit = 2 * sourceLength;
target = new UChar[targetLimit];
ucnv_toUChars(cnv, target, targetLimit, source, sourceLength, &status);
cout << u_errorName(status) << endl;
assert(U_SUCCESS(status));
}
Не знакомы с этой библиотекой, но мне кажется, что если вы откроете свой конвертер с помощью '' utf-8'', а затем вызовите 'ucnv_toUChars' для конвертирования, вы не более или менее говорите ему, чтобы конвертировать из Unicode в Unicode? В этом случае это может привести к короткому замыканию. Я бы попробовал открыть его с помощью кодировки iso или чего-то еще. – AJG85