您的位置:首页 > 编程语言 > Python开发

3 python3 编码解码问题 upd接受数据

2017-12-04 15:28 253 查看

1.python3下的中文乱码:send_data.encode("utf-8")

from socket import *
udp_socket = socket(AF_INET, SOCK_DGRAM)

dest_ip = input("请输入目的ip:")
dest_port  = int(input("请输入目的port:"))
send_data = input("请输入要发送的数据:")

udp_socket.sendto(send_data.encode("utf-8"),("192.168.123.1",dest_port))

 

python@ubuntu:~/python06/07-网络编程$ python3 06-python3编码问题.py 请输入目的ip:192.168.123.1
请输入目的port:8080
请输入要发送的数据:hello 你好

 

 

 2.软件是gb2312编码格式的   send_data.encode("gb2312")

 

from socket import *
udp_socket = socket(AF_INET, SOCK_DGRAM)

dest_ip = input("请输入目的ip:")
dest_port  = int(input("请输入目的port:"))
send_data = input("请输入要发送的数据:")

#udp_socket.sendto(send_data.encode("utf-8"),("192.168.123.1",dest_port))
udp_socket.sendto(send_data.encode("gb2312"),("192.168.123.1",dest_port))

 

 

 

3.元组解包,upd接受数据

In [2]: a = (111,222)

In [3]: b,c = a

In [4]: b
Out[4]: 111

In [5]: c
Out[5]: 222

 

from socket import *

updSocket = socket(AF_INET,SOCK_DGRAM)
updSocket.bind(("",7789))

recvData = updSocket.recvfrom(1024)

content,destInfo = recvData
print(recvData)
print("content is %s"%content)
print("content is %s"%content.decode("gb2312"))

 

     

    

##等待接受数据
python@ubuntu:~/python06/07-网络编程$ python3 07-python3解码问题.py ('192.168.123.1', 8080)
content is b'hello world'
content is hello world

##等待接受数据
python@ubuntu:~/python06/07-网络编程$ python3 07-python3解码问题.py
(b'\xc4\xe3\xba\xc3\xa3\xac\xb2\xcb\xc4\xf1', ('192.168.123.1', 8080))
content is b'\xc4\xe3\xba\xc3\xa3\xac\xb2\xcb\xc4\xf1'
content is 你好,菜鸟

 

4.编码encode  解码decode

##对于要发送的数据,编码
sendData = "123"

udpSocket.sendto(sendData.encode("utf-8"))

#对于接受来的数据,要进行解码
recvData = xxx.recvfrom(1024)
a,b = recvData
#a = recvData[0]

recvData[0].decode("gb2312")

 

5.例子

    

 

In [10]: n = "你好"

In [11]: n.encode("gb2312")
Out[11]: b'\xc4\xe3\xba\xc3'

In [12]: b = n.encode("gb2312")

In [13]: n
Out[13]: '你好'

In [14]: b
Out[14]: b'\xc4\xe3\xba\xc3'

In [15]: b.decode()

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call

In [16]: b.decode("utf-8")
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call

In [17]: b.decode("gb2312")
Out[17]: '你好'

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: