@@ -50,6 +50,12 @@ def write_py(name, code):
5050    print ('Code wrote to: %s'  %  fpath )
5151    return  fpath 
5252
53+ def  decode (s ):
54+     try :
55+         return  s .decode ('utf-8' )
56+     except  UnicodeDecodeError :
57+         return  s .decode ('gbk' )
58+ 
5359def  application (environ , start_response ):
5460    host  =  environ .get ('HTTP_HOST' )
5561    method  =  environ .get ('REQUEST_METHOD' )
@@ -86,9 +92,9 @@ def application(environ, start_response):
8692    try :
8793        fpath  =  write_py (name , code )
8894        print ('Execute: %s %s'  %  (EXEC , fpath ))
89-         r ['output' ] =  subprocess .check_output ([EXEC , fpath ], stderr = subprocess .STDOUT , timeout = 5 ). decode ( 'utf-8' )
95+         r ['output' ] =  decode ( subprocess .check_output ([EXEC , fpath ], stderr = subprocess .STDOUT , timeout = 5 ))
9096    except  subprocess .CalledProcessError  as  e :
91-         r  =  dict (error = 'Exception' , output = e .output . decode ( 'utf-8' ))
97+         r  =  dict (error = 'Exception' , output = decode ( e .output ))
9298    except  subprocess .TimeoutExpired  as  e :
9399        r  =  dict (error = 'Timeout' , output = '执行超时' )
94100    except  subprocess .CalledProcessError  as  e :
0 commit comments