3

我有一个字符串输出,它不一定是有效的 utf8。我必须将它传递给只接受有效 utf8 字符串的方法。
因此,我需要将输出转换为最接近的有效 utf8 字符串,删除无效字节或部分。我怎么能在 C++ 中做到这一点?我不想使用第 3 方库。

4

2 回答 2

2

您应该使用这些icu::UnicodeString方法fromUTF8(const StringPiece &utf8)toUTF8String(StringClass &result).

于 2012-10-23T12:47:58.627 回答
0

如果您确定您的字符串是有效的 UTF-8,只有几个损坏的字节,http://utfcpp.sourceforge.net/可以解决这个问题。从页面:

#include "utf8.h"
void fix_utf8_string(std::string& str) {
    std::string temp;
    utf8::replace_invalid(str.begin(), str.end(), back_inserter(temp));
    str = temp;
}

在处理 Unicode 数据时,您几乎不可能要求不使用 3rd 方库,但 UTF8-CPP 库是仅标头,这是您可以得到的最轻量级的。

于 2013-01-06T16:57:51.260 回答