我有以下Python代码,它通过stdout使用Android logcat将电话中的日志提取到wxPython Text字段中。我登录到我的应用程序,用户名jack和密码Jack @ 123 $,logcat输出停止并显示错误,似乎不像@或$符号:
return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 76: character maps to <undefined>
或当我尝试将文本控件的GetValue()保存到打开以进行写入的.txt文件中时:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 204447-204449: ordinal not in range(128)
logcat函数的代码如下
def logcat(self):
params = [toolsDir + "\\adb.exe", "logcat"]
p = Popen(params, stdout=subprocess.PIPE, bufsize=1)
for line in p.stdout:
#line = line.decode('Latin-1')
self.progressBox.AppendText(line)
def saveLog(self,e):
f = open(outDir + '\\' + pkgName + '\\' + pkgName + '_logcat.txt', 'w')
f.write(self.progressBox.GetValue())
f.close()
使用stdout为这些符号实现解码的正确方法是什么。谢谢
编辑:答案如下,我不得不从stdout解码('utf-8')到文本框,但是在写入文件时再编码('utf-8')。
for line in p.stdout:
self.progressBox.AppendText(line.decode('utf-8'))
f.write(self.progressBox.GetValue().encode('utf-8'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句