格式化Protobuf消息,包括非ASCII字符串

时间:2012-09-11 06:21:40

标签: java protocol-buffers

当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."
}

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

3 个答案:

答案 0 :(得分:2)

自2.5.0以来,有TextFormat.printToUnicodeString

答案 1 :(得分:1)

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

答案 2 :(得分: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)