@@ -46,6 +46,12 @@ def asUnicode(s):
4646 except :
4747 return str (s )
4848
49+ def ensureUtf (s ):
50+ if type (s ) == unicode :
51+ return s .encode ('utf8' , 'ignore' )
52+ else :
53+ return str (s )
54+
4955def findLoc (body , line , total ):
5056 for i in range (len (body )):
5157 if body [i ].lineno == line :
@@ -184,19 +190,19 @@ def handleEval(data):
184190 loc = form [0 ]
185191 isEval = False
186192 try :
187- code = compile (code , data [2 ]["name" ], 'eval' )
193+ code = compile (ensureUtf ( code ), ensureUtf ( data [2 ]["name" ]) , 'eval' )
188194 isEval = True
189195 except :
190196 try :
191- code = compile (code , data [2 ]["name" ], 'exec' )
197+ code = compile (ensureUtf ( code ), ensureUtf ( data [2 ]["name" ]) , 'exec' )
192198 except :
193199 e = traceback .format_exc ()
194200 send (data [0 ], "editor.eval.python.exception" , {"ex" : cleanTrace (e ), "meta" : loc })
195201 continue
196202
197203 try :
198204 if isEval :
199- result = eval (code , module .__dict__ )
205+ result = eval (ensureUtf ( code ) , module .__dict__ )
200206 send (data [0 ], "editor.eval.python.result" , {"meta" : loc , "result" : asUnicode (result )})
201207 else :
202208 exec (code , module .__dict__ )
@@ -254,11 +260,11 @@ def ipyEval(data):
254260 loc = form [0 ]
255261 isEval = False
256262 try :
257- compile (code , data [2 ]["name" ], 'eval' )
263+ compile (ensureUtf ( code ), ensureUtf ( data [2 ]["name" ]) , 'eval' )
258264 isEval = True
259265 except :
260266 try :
261- compile (code , data [2 ]["name" ], 'exec' )
267+ compile (ensureUtf ( code ), ensureUtf ( data [2 ]["name" ]) , 'exec' )
262268 except :
263269 e = traceback .format_exc ()
264270 send (data [0 ], "editor.eval.python.exception" , {"ex" : cleanTrace (e ), "meta" : loc })
0 commit comments