如何在c ++中转换为utf8字符串

时间:2012-10-23 12:46:06

标签: c++ string utf-8

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

2 个答案:

答案 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库只是标题,它可以尽可能轻松。