我有一个字符串输出,不一定有效utf8。我必须将它传递给只接受有效utf8字符串的方法 因此,我需要将输出转换为最接近的有效utf8字符串,删除无效的字节或部分。我怎么能用c ++做到这一点?我不想使用第三方库。
答案 0 :(得分:2)
您应该使用icu::UnicodeString
方法fromUTF8(const StringPiece &utf8)
或toUTF8String(StringClass &result).
答案 1 :(得分: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数据时,您对不使用第三方库的要求几乎是不可能的,但UTF8-CPP库只是标题,它可以尽可能轻松。