Google协议缓冲区错误:"在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串"

use*_*605 3 protocol-buffers

我使用以下代码

int lenSend = odl->ByteSize();
char* buf = (char *)malloc(lenSend);
odl->SerializeToArray(buf, lenSend);
Run Code Online (Sandbox Code Playgroud)

我收到这个错误,我无法理解为什么我得到它(是的,我得到它三次):

libprotobuf ERROR google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串.字符串必须只包含UTF-8; 对原始字节使用'bytes'类型.
libprotobuf ERROR google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串.字符串必须只包含UTF-8; 对原始字节使用'bytes'类型.
libprotobuf ERROR google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串.字符串必须只包含UTF-8; 对原始字节使用'bytes'类型.

谢谢.

Fra*_*ser 7

您可以按照消息中的建议消除警告!

您必须在odl(在.proto文件中)的定义中包含一个或多个字段,这些字段定义为string您将非UTF-8字符放入其中. 文档声明你不应该这样做.如果将这些更改为bytes,则警告应消失.