7

当 protobuf 消息包含非 ASCII 字符的字符串时,message.toString()返回类似

alarm {
  message: "\320\227\320\260\320\262\320\265\321\200\321\210\320\265\320\275\320\270\320\265 \321\201\320\262\321\217\320\267\320\270 \321\201 mzta1."
}

我希望在日志中看到包含西里尔字符的字符串。有没有一种简单的方法可以做到这一点?

4

3 回答 3

3

从 2.5.0 开始,有TextFormat.printToUnicodeString.

于 2013-08-20T06:40:29.070 回答
1

我找到的唯一方法 - 复制 com.google.protobuf.TextFormat 的一部分并删除 printFieldValue() 方法中的字符串转义。

于 2012-09-19T16:19:05.297 回答
1

TextFormat::Printer 类中有 SetUseUtf8StringEscaping 方法:

// Set true to output UTF-8 instead of ASCII.  The only difference
// is that bytes >= 0x80 in string fields will not be escaped,
// because they are assumed to be part of UTF-8 multi-byte
// sequences.
void SetUseUtf8StringEscaping(bool as_utf8)
于 2013-08-19T14:43:51.563 回答