当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."
}
我希望在日志中看到包含西里尔字符的字符串。有一种简单的方法可以做到这一点吗?
答案 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)