Мой код C ++ выполняет SerializeToArray
и сохраняет в redis.
Затем код python получает эту сериализованную информацию и вызывает ParseFromString
для преобразования ее в сообщение protobuf, но я получаю ошибку.
Я пытался использовать SerializeToString
и сохранить, но это не сработало.
Это проблема кодирования?
Ошибка:
Traceback (most recent call last):
File "/data/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/bin/watcher.py", line 202, in nnq_msg_notification_callback
nnq_msg_notify_proc(self.frame, body_json.get("body"))
File "/data/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/bin/nnq_msg_notification_process.py", line 31, in nnq_msg_notify_proc
msg_model = get_new_msg_model(frm, msg_id)
File "/data/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/bin/usual_msg_notification_process.py", line 66, in get_new_msg_model
msg_model.ParseFromString(fm_bytes)
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/message.py", line 186, in ParseFromString
self.MergeFromString(serialized)
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/internal/python_message.py", line 841, in MergeFromString
if self._InternalParse(serialized, 0, length) != length:
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/internal/python_message.py", line 874, in InternalParse
pos = field_decoder(buffer, new_pos, end, self, field_dict)
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/internal/decoder.py", line 633, in DecodeRepeatedField
if value.add()._InternalParse(buffer, pos, new_pos) != new_pos:
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/internal/python_message.py", line 874, in InternalParse
pos = field_decoder(buffer, new_pos, end, self, field_dict)
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/internal/decoder.py", line 520, in DecodeField
field_dict[key] = _ConvertToUnicode(buffer[pos:new_pos])
File "/home/redstarzhang/nn_media/nnq_msg_svr/nnq_msg_svr_watcher/lib/lib/python2.6/site-packages/google/protobuf/internal/decoder.py", line 487, in _ConvertToUnicode
return local_unicode(byte_str, 'utf-8')
PBErr: ошибка PB: кодек «utf8» не может декодировать байты в позиции 381-382: кодек «utf8» не может декодировать байты в позиции 381-382: недопустимый байт продолжения в поле :. ..
PBErr: ошибка PB: кодек «utf8» не может декодировать байты в позиции 381-382: кодек «utf8» не может декодировать байты в позиции 381-382: недопустимый байт продолжения в поле: