3

必ずしも有効な utf8 ではない文字列出力があります。有効な utf8 文字列のみを受け入れるメソッドに渡す必要があります。
したがって、無効なバイトまたは部分を削除して、出力を最も近い有効な utf8 文字列に変換する必要があります。どうすればC ++でそれを行うことができますか? サードパーティのライブラリは使用したくありません。

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 データを扱う場合、サードパーティのライブラリを使用しないという要件はほとんど不可能ですが、UTF8-CPP ライブラリはヘッダーのみであり、可能な限り軽量です。

于 2013-01-06T16:57:51.260 に答える