【问题标题】:How do I change my data from bytes to strings in this function?如何在此函数中将数据从字节更改为字符串?
【发布时间】:2018-01-03 17:50:56
【问题描述】:

我有一些网络程序的代码。和它的

def dataReceived(self, data)
    print(f"Received quote: {data}") 
    self.transport.loseConnection()

这个函数正在打印

Received quote: b'\x00&C:\\Users\\.pycharm2016.3\\config\x00&C:\\users\\pych‌​arm\\system\x00\x03-‌​-'

我将如何更改我的代码来解决这个问题?

我想我知道正在发生的事情是打印出来的是以字节为单位的代码,它需要转换为字符串,但是我是在程序的服务器端还是客户端执行此操作?

当我写作时

print(f"receivedquote: {data}".decode('utf-8')

这并不能解决问题。我有很多错误。我怎样才能更好地提出这个问题以找到解决方案?

【问题讨论】:

  • 您只需要解码data 字符串,而不是整个“Received quote: {data}”字符串。

标签: python-3.x networking unicode twisted


【解决方案1】:

解码实际数据:

data = data.decode('utf-8')

此时,data 是一个 Python Unicode 字符串,您可以打印、搜索、切片等。

(您的数据看起来并不特别像 UTF-8,但我不会去猜测;也不是很明显不是 UTF-8。)

通常最好在收到字节字符串后立即转换为 Unicode,然后让程序的其余部分对字符串进行操作。如果您需要编码回字节,同样只在外围执行此操作,就在数据离开您的程序之前。 (Ned Batchelder 称之为“Unicode 三明治”。)

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 2020-05-18
    • 2023-03-10
    • 2021-02-14
    • 2018-09-02
    • 2020-04-18
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多