如何解决python UnicodeDecodeError问题?

安装完django之后没有进行任何多余操作,新建工程,直接运行python manage.py runserver报错

D:\myblog>python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\commands\runserver.py", line 62, in execute
    super(Command, self).execute(*args, **options)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\commands\runserver.py", line 101, in handle
    self.run(**options)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\core\management\commands\runserver.py", line 110, in run
    autoreload.main(self.inner_run, None, options)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\utils\autoreload.py", line 341, in main
    reloader(wrapped_main_func, args, kwargs)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\utils\autoreload.py", line 312, in python_reloader
    exit_code = restart_with_reloader()
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\utils\autoreload.py", line 294, in restart_with_reloader
    str_value = force_bytes(new_environ[key], encoding=encoding)
  File "C:\ProgramData\Anaconda2\lib\site-packages\django\utils\encoding.py", line 124, in force_bytes
    return s.decode('utf-8', errors).encode(encoding, errors)
  File "C:\ProgramData\Anaconda2\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xba in position 0: invalid start byte

经过搜索,怀疑是win10编码环境一类的问题导致的,因为我尝试在python命令行下运行

>>> "测试".decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\ProgramData\Anaconda2\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb2 in position 0: invalid start byte

在linux环境下,这样decode是不会报错的。请问问题出在哪里?该怎么解决呢

阅读 6.7k
2 个回答

编码不一样,linux命令行可以用utf8解码,windows命令行一般是gbk
clipboard.png

clipboard.png

django报错是版本适配问题。django1.11.4(最新版)和python27可能存在不兼容。存在同样问题的可以重装django呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题