如何在python3中正确解码图像/ pdf文件

时间:2015-10-18 05:22:12

标签: python unicode

我按如下方式发送文件。

with open(file,'rb') as f:
    rh=f.read()

现在发送它我使用

sock.sendto(rh, (ip,port))

虽然接收到I尝试解码如下。

dat = sock.recvfrom()
data=dat.decode('ascii')

然后我将其写入文件。这对于文本文件来说非常好。但是,如果我发送和接收图像/ pdf文件,我会收到此错误..

File "code.py", line 16, in <module>
    data=dat.decode('ascii')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 41: ordinal not in range(128)

我无法在这里找出问题所在。我也使用了dat.decode(&#39; utf-8&#39;)但没有使用

2 个答案:

答案 0 :(得分:2)

尝试使用codecs打开文件。

import codecs

f = codecs.open(filepath, encoding="ISO8859-1")

当我使用API​​上传PDF文件时为我工作。

答案 1 :(得分:1)

无需解码。您以二进制模式读取并发送文件,因此以二进制模式写入接收的文件。 encode / decode用于将Unicode文本转换为二进制表示形式。

with open(output_filename,'wb') as f:
    f.write(data)