【问题标题】:how can i fix malformed string output when python server gets data through gRPC?当 python 服务器通过 gRPC 获取数据时,如何修复格式错误的字符串输出?
【发布时间】:2020-08-06 06:12:04
【问题描述】:

制作服务器(python),客户端(golnag)

当客户端通过 gRPC 发送字符串数组时

服务器打印出奇怪的数据。

以下示例.proto

message HiRequest {
    repeated string hi = 1;
}

golang 代码如下

input := new(pb.HiRequest)
input.Hi = append(input.Hi, "안녕")
input.Hi = append(input.Hi, "おはよう")
input.Hi = append(input.Hi, "Hello")
// Send to server

下面的python代码

print(request.hi)

预期输出是

hi: "안녕"
hi: "おはよう"
hi: "Hello"

但实际输出是

hi: "\354\225\210\353\205\225"
hi: "\343\201\212\343\201\257\343\202\210\343\201\206"
hi: "Hello"

谁能告诉我原因?和解决方案请

谢谢!

【问题讨论】:

    标签: python go grpc


    【解决方案1】:

    发生的情况是您发送 Unicode 字符并将它们编码为 1 字节字符。假设您收到的值是字节类型,只需执行以下操作:

    value.decode()
    

    例如:

    value = b"\343\201\212\343\201\257\343\202\210\343\201\206" # creating a bytes type string
    print(value.decode())
    >>> おはよう
    

    编辑:

    对于任何其他偶然发现的人: 如果我所说的对您不起作用,请将您的 .proto 文件中的值更改为字符串中的字节

    【讨论】:

    • 谢谢。但它说没有decode() func。 Exception calling application: 'str' object has no attribute 'decode'
    • @JS_Kim 尝试在.proto 文件中使用字节,然后再次尝试我的解决方案,我认为它可能会起作用
    • @JS_Kim Awesome :D 很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多