django UnicodeDecodeError:'utf8'编解码器无法解码位置87的字节0xe9:无效的连续字节

时间:2014-04-02 17:22:36

标签: python django

我试图将aptana studio 3用于django项目,但无论我做了什么,都会得到unicodedecodeerror。

经过大量不成功的谷歌搜索,尝试了一个准确的django项目。不是我的一行代码,只是aptana的开始代码。

我期待django的常用空白页面(项目工作,尚未完成),但STILL得到了编码错误。我没有编写一行代码,因此没有拉丁字符或任何其他编码/解码的模板。

尝试:

Windows->偏好设置 - >常规 - >工作区 - >文本文件编码为UTF-8

右键单击项目 - >资源 - >文本文件编码为UTF-8

# - - 编码:utf-8 - - 在每个文件的第一行

什么都没有。

我有点被困在这里。有人可以帮忙吗?

Win7 64bit

来自控制台的错误消息:

Validating models...
0 errors found
April 02, 2014 - 17:55:34
Django version 1.6, using settings 'hello.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Traceback (most recent call last):
 File "C:\Users\bruna\Documents\Aptana Studio 3 Workspace\hello\src\manage.py", line 10, in <module>
  execute_from_command_line(sys.argv)
 File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 399, in execute_from_command_line
  utility.execute()
 File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 392, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
 File "C:\Python27\lib\site-packages\django\core\management\base.py", line 242, in run_from_argv
  self.execute(*args, **options.__dict__)
 File "C:\Python27\lib\site-packages\django\core\management\base.py", line 285, in execute
  output = self.handle(*args, **options)
 File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 76, in handle
  self.run(*args, **options)
 File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 87, in run
  self.inner_run(*args, **options)
 File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 132, in inner_run
  self.stderr.write("Error: %s" % error_text)
 File "C:\Python27\lib\site-packages\django\core\management\base.py", line 65, in write
  if ending and not msg.endswith(ending):
 File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
  return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 87: invalid continuation byte

3 个答案:

答案 0 :(得分:0)

根据堆栈跟踪(您应该查找根本原因的实际位置)来判断,msg中有ending(最有可能,因为if ending and not msg.endswith(ending):很少有87个字符长)这是无效的utf-8。这可能是设置文件或输入参数中的编码问题。

我建议:

  • 在PDB下运行整个内容以查看msg的值或在违规行之前添加repr(msg)的调试打印
  • 跟踪不正确数据的来源。它很可能是开发人员的疏忽(无法检查输入数据)。

答案 1 :(得分:0)

你试试:

manage.py dbshell
ALTER TABLE database.table MODIFY COLUMN col VARCHAR(255)  CHARACTER SET utf8 COLLATE
utf8_general_ci NOT NULL;

更改database.table和col。 享受!

答案 2 :(得分:0)

一个原因是,您在过去的一段时间内与grep一起使用了sed:

sed -i "s#views_gaoji#fenye#g" grep -rl views_gaoji。/`

以上命令将在不通知您的情况下修改.pyc文件。

然后,当您启动Django时, Django将以.pyc开头,而不是工程文件。

然后您将不知道错误在哪里而得到错误 要么 您的manage.py文件中会出现错误,但您永远都不会对其进行修改,

那为什么为什么说您的manage.py有错误?

----------------------------------------------- ----------------------

那是因为您的* .pyc文件已被sed命令更改

解决方案:

find . -name "*.pyc" | xargs rm -f

,然后输入:

python manage.py runserver port