как я могу исправить искаженный вывод строки, когда python сервер получает данные через gRP C? - PullRequest
0 голосов
/ 06 августа 2020

сервер создания (python), клиент (golnag)

Когда клиент отправляет массив строк через gRP C

, сервер печатает странные данные.

пример .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"

может кто-нибудь сказать мне причину? и решение плз

Спасибо!

1 Ответ

4 голосов
/ 06 августа 2020

Что происходит, так это то, что вы отправляете символы 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 на байты из строки

...