我想使用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