5

次のコードを使用しています

int lenSend = odl->ByteSize();
char* buf = (char *)malloc(lenSend);
odl->SerializeToArray(buf, lenSend);

このエラーが表示されますが、なぜそれが表示されるのか理解できません (はい、3 回表示されます):

libprotobuf ERROR google/protobuf/wire_format.cc:1059] プロトコル バッファのシリアル化中に、無効な UTF-8 データを含む文字列が見つかりました。文字列には UTF-8 のみを含める必要があります。raw バイトには「bytes」タイプを使用します。
libprotobuf ERROR google/protobuf/wire_format.cc:1059] プロトコル バッファのシリアル化中に、無効な UTF-8 データを含む文字列が見つかりました。文字列には UTF-8 のみを含める必要があります。raw バイトには「bytes」タイプを使用します。
libprotobuf ERROR google/protobuf/wire_format.cc:1059] プロトコル バッファのシリアル化中に、無効な UTF-8 データを含む文字列が見つかりました。文字列には UTF-8 のみを含める必要があります。raw バイトには「bytes」タイプを使用します。

ありがとう。

4

5 に答える 5

11

メッセージのアドバイスに従うことで、警告を取り除くことができます!

odl(.proto ファイル内の)の定義にstring、UTF-8 以外の文字を入力するように 定義されているフィールドが必要です。ドキュメントには、これを行うべきではないと記載されています。これらを に変更するbytesと、警告が消えるはずです。

于 2013-03-01T19:54:38.873 に答える
0

string 文字列には、常に UTF-8 でエンコードされたテキストまたは 7 ビット ASCII テキストが含まれている必要があります。文字列 文字列 str/unicode[4]

bytes バイトの任意のシーケンスを含めることができます。文字列 バイト文字列 str

文字列の代わりにバイトを使用する必要がある場合もあります。

于 2014-02-17T05:05:02.213 に答える
0

golang では、strings.ToValidUTF8 を使用して一時的な回避を行うことができます。

于 2021-08-25T06:27:52.363 に答える