我想使用ICU库来测试,如果一个字符串具有无效的UTF-8字符。我创建了一个utf-8转换器,但没有无效的数据给我转换错误。感谢你的帮助。C++检查,如果字符串具有有效的UTF-8字符
感谢, 普拉香特
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 2012-03-02 20:14:21