2
回答
哪位大神帮忙解释下为什么python的socket.send不能发送unicode码流?
【腾讯云】学生服务器套餐10元/月 >>>   
测试代码如下:
server.py
----------------------------------------------
import socket, sys

reload(sys)
#sys.setdefaultencoding('utf-8')

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

host = socket.gethostname()
port = 5020
s.bind(('10.0.2.77', port))

s.listen(5)

while True:
    c, addr = s.accept()
    print 'Got connect from', addr
    se = u'\u6C49'
    print se, isinstance(se, unicode), type(se), repr(se), sys.getdefaultencoding(), sys.getfilesystemencoding()
    c.send(se)
    c.close()

客户端:
import socket

s = socket.socket()

host = socket.gethostname()
port = 5020

s.connect(('10.0.2.77', port))
re = s.recv(1024)
#print re

print repr(re)
#print unicode(re, 'utf-8')
s.close()

输出结果:
服务端>>
Got connect from ('10.0.2.77', 31773)
汉 True <type 'unicode'> u'\u6c49' utf-8 mbcs

客户端>>

'\xe6\xb1\x89'


PS:网络抓包和客户端显示发送的码流变成了utf-8编码了

举报
RoT__
发帖于3年前 2回/1K+阅
顶部