在python3中socket傳送文件只能傳送‘bytes'類型,如下例子: decode encode bytes > str(unicode) >bytes ...
在python3中socket傳送文件只能傳送‘bytes'類型,如下例子:
import socket
client = socket.socket()
client.connect(("localhost",8808))
client.send(b"Hello world!")
在例子中“hello world"為字元串類型,所以要轉換成”bytes"類型,所以前面加一個“b"就行了,
但是,如何將“Hello world"改成中文就就會出錯,因為這種形式只能將存在於Ascii碼編碼內的字
符串和符號進行轉換,當一個字元串不在Ascii碼編碼範圍內例如中文,則用這種形式就會報錯,所以
當出現中文字元串時,要用encode進行編碼,編碼後字元串會變成為位元組類型(bytes),如下所示:
decode encode
bytes ------> str(unicode)------>bytes
這樣之後,發送端就可以將信息以“bytes"類型發送,伺服器接收到的也是編碼後的二進位信息,要顯
示中文必須要採用decode解碼。所以,如何是中文要採用如下形式:
import socket
client = socket.socket()
client.connect(("localhost",8808))
client.send("你好世界!".encode("utf-8"))