mirror of https://github.com/openspug/spug
F 修复web终端偶现中文乱码的问题
parent
e8baf235f5
commit
db38454787
|
@ -59,17 +59,29 @@ class SSHConsumer(BaseConsumer):
|
||||||
self.ssh = None
|
self.ssh = None
|
||||||
|
|
||||||
def loop_read(self):
|
def loop_read(self):
|
||||||
is_ready = False
|
is_ready, data = False, b''
|
||||||
while True:
|
while True:
|
||||||
data = self.chan.recv(32 * 1024)
|
out = self.chan.recv(32 * 1024)
|
||||||
if not data:
|
if not out:
|
||||||
self.close(3333)
|
self.close(3333)
|
||||||
break
|
break
|
||||||
text = str_decode(data)
|
data += out
|
||||||
|
try:
|
||||||
|
text = data.decode()
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
try:
|
||||||
|
text = data.decode(encoding='GBK')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
time.sleep(0.01)
|
||||||
|
if self.chan.recv_ready():
|
||||||
|
continue
|
||||||
|
text = data.decode(errors='ignore')
|
||||||
|
|
||||||
if not is_ready:
|
if not is_ready:
|
||||||
self.send(text_data='\033[2J\033[3J\033[1;1H')
|
self.send(text_data='\033[2J\033[3J\033[1;1H')
|
||||||
is_ready = True
|
is_ready = True
|
||||||
self.send(text_data=text)
|
self.send(text_data=text)
|
||||||
|
data = b''
|
||||||
|
|
||||||
def receive(self, text_data=None, bytes_data=None):
|
def receive(self, text_data=None, bytes_data=None):
|
||||||
data = text_data or bytes_data
|
data = text_data or bytes_data
|
||||||
|
|
|
@ -41,7 +41,10 @@ def str_decode(data):
|
||||||
try:
|
try:
|
||||||
data = data.decode()
|
data = data.decode()
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
data = data.decode(encoding='GBK', errors='ignore')
|
try:
|
||||||
|
data = data.decode(encoding='GBK')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
data = data.decode(errors='ignore')
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue