windows使用kivy时logger打印错误

作者:清一

类别:kivy   

发布时间:2019/09/13 17:46:18   更新时间:2019/09/14 11:07:23


        在windows上使用kivy非常方便,不管是你开发windows的app,还是开发其它os的app在windows上仿真调试。

有时候会出现这样的错误:

 

--- Logging error ---]
Traceback (most recent call last):]
  File "C:\Python366-32\lib\logging\__init__.py", line 995, in emit]
    stream.write(msg)]
  File "C:\Python366-32\lib\encodings\cp1252.py", line 19, in encode]
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 48-49: character maps to <undefined>]
Call stack:]
  File "main.py", line 913, in <module>]
    MainApp().run()]
  File "C:\Python366-32\lib\site-packages\kivy\app.py", line 855, in run]
    runTouchApp()]
  File "C:\Python366-32\lib\site-packages\kivy\base.py", line 504, in runTouchApp]
    EventLoop.window.mainloop()]
  File "C:\Python366-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 747, in mainloop]
    self._mainloop()]
  File "C:\Python366-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 479, in _mainloop]
    EventLoop.idle()]
  File "C:\Python366-32\lib\site-packages\kivy\base.py", line 339, in idle]
    Clock.tick()]
  File "C:\Python366-32\lib\site-packages\kivy\clock.py", line 591, in tick]
    self._process_events()]
  File "main.py", line 190, in main_screen]
 

        关键是这一句错误:UnicodeEncodeError: 'charmap' codec can't encode characters in position

        这个明显是编解码错误。需要排查:程序IDE、cmd、windows的编码都是不是UTF-8。

        如果程序以前是好的,IDE的编码也是UTF-8的,cmd的编码用命令:chcp 65001。还解决不了。

        这样,问题可能是你的windows的对话框不支持中文了。——这种事情可能是操作失误什么的,造成系统字体替换或损坏。

        我们可以打开几个有弹出窗口的程序,如果弹出窗口有乱码,那就确定是这个问题了。

 

       恢复方法:两步!

        1、控制面板——区域和语言——管理——更改系统区域设置——英语(美国)——重启

        2、控制面板——区域和语言——管理——更改系统区域设置——中文简体(中国)——重启

        这样,问题就解决了。

 

       可以参考这个经验:https://jingyan.baidu.com/article/d621e8da2e13652865913fb1.html

        打印日志,用英文不用中文,可以防不测之忧。。。:)


本文属于原创文章,未经许可,任何媒体、公司或个人不得刊发或转载。

本文网址:https://www.pyfield.com/blog/?id=30