我有一个字符串输出,它不一定是有效的 utf8 格式。我必须将其传递给一个只接受有效 utf8 字符串的方法。
因此我需要将输出转换为最接近的有效 utf8 字符串,删除无效字节或部分。如何在 c++ 中实现这个功能?我不想使用第三方库。
因此我需要将输出转换为最接近的有效 utf8 字符串,删除无效字节或部分。如何在 c++ 中实现这个功能?我不想使用第三方库。
icu::UnicodeString
方法中的fromUTF8(const StringPiece &utf8)
或者toUTF8String(StringClass &result)
来处理此问题。如果您确定您的字符串是有效的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库仅包含头文件,这是最轻量级的。