作者blc (Anemos)
看板Python
标题[问题] 用socket的recv()接收中文…
时间Thu Feb 5 13:18:49 2009
我用socket和threading试着写了个server,
可以用telnet连上去,server会把输入的东西再丢回去。
ex.
用telnet 连上後,输入asdf,server就会回应"You say:asdf"。
但是在试unicode中文有时候会有错误,
如输入"中文",server正常回应"You say:中文",
但输入"可"时,server就没回应了。
奇妙的是,如果用big5终端机就没这样的问题…
有人知道这是什麽问题吗?
原始码如下:
# -*- coding: utf-8 -*-
# Echo server program
import socket
import threading
class ClientThread(threading.Thread):
def __init__(self,channel,details):
self.channel = channel
self.details = details
threading.Thread.__init__(self)
def run(self):
print 'Recived connection:', self.details[0]
self.channel.send("Hi vistor from: "+self.details[0]+"\n")
while 1:
recv = self.channel.recv(1024)
print("Server get:"+repr(recv))
if recv == '': break
self.channel.send("You say:"+repr(recv)+"\n")
self.channel.send("You say:"+recv)
self.channel.close()
print 'Closed connection:', self.details[0]
if __name__ == "__main__":
host = '' # Symbolic name meaning all available interface
port = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(5)
while 1:
conn, addr = s.accept()
ClientThread(conn,addr).start()
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.137.32.135
1F:推 StubbornLin:编码的问题吧? 用utf8编码送出 接收时解码试试看 02/05 14:39
2F:→ blc:试过了,用.decode('utf8')遇中文就挂… 02/05 15:13