zoukankan      html  css  js  c++  java
  • python在windows下UnicodeDecodeError的解决方法

    之前在windows下使用python调用某些模块时都会报错,像这样:

    C:Documents and SettingsAdministrator>python -m CGIHTTPServer
    Traceback (most recent call last):
      File "C:Python27lib
    unpy.py", line 162, in _run_module_as_main
        "__main__", fname, loader, pkg_name)
      File "C:Python27lib
    unpy.py", line 72, in _run_code
        exec code in run_globals
      File "C:Python27libCGIHTTPServer.py", line 30, in <module>
        import SimpleHTTPServer
      File "C:Python27libSimpleHTTPServer.py", line 27, in <module>
        class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
      File "C:Python27libSimpleHTTPServer.py", line 208, in SimpleHTTPRequestHand
    ler
        mimetypes.init() # try to read system mime.types
      File "C:Python27libmimetypes.py", line 358, in init
        db.read_windows_registry()
      File "C:Python27libmimetypes.py", line 258, in read_windows_registry
        for subkeyname in enum_types(hkcr):
      File "C:Python27libmimetypes.py", line 249, in enum_types
        ctype = ctype.encode(default_encoding) # omit in 3.x!
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9: ordinal
    not in range(128)

    可以看到栈跟踪一直指向了python目录下的libmimetypes.py文件,根据查到的资料,解决方法是这样的

    找到mimetypes.py文件第256行左右的default_encoding = sys.getdefaultencoding(),在它的前面加上

    if sys.getdefaultencoding() != 'gbk': 
                reload(sys) 
                sys.setdefaultencoding('gbk')  

    if和default_encoding对齐,然后问题就解决了,详细原理等我深入了解了再补充过来

  • 相关阅读:
    构造月份选择框
    自定义验证
    设置队列中文件上的“X”号的点击事件+uploadLimit动态加1
    easyui在table单元格中添加进度条
    js里生成guid
    宽高
    获取iframe中的tree
    form表单
    position详解
    java通过jdbc连接数据库并更新数据(包括java.util.Date类型数据的更新)
  • 原文地址:https://www.cnblogs.com/piaomiao1314/p/3818259.html
Copyright © 2011-2022 走看看