【问题标题】:'ascii' codec can't decode byte (problem when using django)“ascii”编解码器无法解码字节(使用 django 时出现问题)
【发布时间】:2011-11-23 04:01:46
【问题描述】:

我在 python 中编写了一个简单的 html 解析类,它似乎工作正常,然后我尝试将它与 django 一起使用,我得到了这个错误:

'ascii' codec can't decode byte 0xc2 in position 54465: ordinal not in range(128)

这很奇怪,因为我在班级顶部添加了这个:# encoding: utf-8。我对编码知之甚少,但有人可以告诉我这里发生了什么吗?顺便说一句,我还确保源 html 已经在 utf-8 中。谢谢!

【问题讨论】:

  • # encoding: utf-8 不会对您的班级运作方式做任何事情。这只是一个评论...我认为您可能会将它与将 # -*- coding: utf-8 -*- 放在文件顶部混淆,它只是试图提醒解析器(或文本编辑器等)源代码的编码.
  • 好吧,我至少确定这是 django 问题而不是 python 问题。我单独在 python 中尝试这个类,它工作正常。然后,当我尝试在 django 中使用它时,它会返回一个错误,表明它解释了 ascii 中的所有内容。我怎样才能让 django 认为一切都在 utf-8 中?更新:没关系,我明白了。请参阅下面的答案。
  • @voithos: # encoding: utf-8# -*- coding: utf-8 -*- 具有完全相同的效果。 Python 使用正则表达式来解析编码声明;见docs.python.org/reference/…

标签: python django encoding character-encoding


【解决方案1】:

尝试将该行放在文件的顶部。根据PEP 263,它必须在前两行。

【讨论】:

  • 您还可以按照以下说明使您的编码在所有文件中通用:siafoo.net/snippet/32
  • 请注意,这只会影响字符串文字,不会影响变量。
【解决方案2】:

好的,我明白了。我需要做的就是在 django 视图中包含 # -*- coding: utf-8 -*- 并且解决了它!

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2011-06-29
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多