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