Protocol buffers 谷歌协议缓冲区错误:";序列化协议缓冲区时遇到包含无效UTF-8数据的字符串;
我正在使用以下代码Protocol buffers 谷歌协议缓冲区错误:";序列化协议缓冲区时遇到包含无效UTF-8数据的字符串;,protocol-buffers,Protocol Buffers,我正在使用以下代码 int lenSend = odl->ByteSize(); char* buf = (char *)malloc(lenSend); odl->SerializeToArray(buf, lenSend); 我得到这个错误,我不明白为什么我得到它(是的,我得到它三次): libprotobuf错误google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串。字符串必须只包含UTF-8;将“字节”
int lenSend = odl->ByteSize();
char* buf = (char *)malloc(lenSend);
odl->SerializeToArray(buf, lenSend);
我得到这个错误,我不明白为什么我得到它(是的,我得到它三次):
libprotobuf错误google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串。字符串必须只包含UTF-8;将“字节”类型用于原始字节。libprotobuf错误google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串。字符串必须只包含UTF-8;将“字节”类型用于原始字节。
libprotobuf错误google/protobuf/wire_format.cc:1059]在序列化协议缓冲区时遇到包含无效UTF-8数据的字符串。字符串必须只包含UTF-8;将“字节”类型用于原始字节
谢谢。您可以按照邮件中的建议来消除警告
在
odl
(在.proto文件中)的定义中必须有一个或多个字段,这些字段定义为string
,但要将非UTF-8字符放入其中。如果将这些更改为字节,警告应消失。字符串字符串必须始终包含UTF-8编码或7位ASCII文本。字符串str/unicode[4]
字节可以包含任意字节序列。string ByteString str
有时,您应该使用字节而不是字符串 使用字节[]替换字符串,该字符串的编码不是UTF-8或ASCII。转换[]字节进行翻译
例如:
message Data {
Object obj = 1;
}
如果
:
我应该注意到,数据到达另一端(使用GPB作为套接字上的有效负载),看起来很好,但另一端使用相同的反序列化消息进行投诉。我可以不显示这条消息吗?你能把你的答案格式化得更好吗
# marshal object
message Data {
bytes encodeObject = 1;
}
# unmarshal object