【问题标题】:Avoid invalid byte sequences in all django form submissions using UTF-8在所有使用 UTF-8 的 django 表单提交中避免无效字节序列
【发布时间】:2012-05-29 12:00:24
【问题描述】:

我提供用户输入数据。由于用户似乎做了很多复制/粘贴。我正面临解码错误。 DjangoUnicodeDecodeError: ‘utf8’ codec can't decode byte 0×96 in position 22

是否可以将accept-charset="UTF-8" 设置为所有表单。由于所有表单主要由管理员生成,所以我应该覆盖管理员设置吗?

以后如何避免这些问题?我是否需要更改默认 AdminSite 或更改已拥有 100000 个用户的数据库?

【问题讨论】:

  • 我相信我们有相同或相似的问题,我很想知道您是如何解决的?我正在四处寻找将 admin 转换为 accept-charset utf-8,但下面的答案似乎确信这是不对的。你最后做了什么?
  • stackoverflow.com/questions/22800414/python-django-iso-8859-1-user-input-encoding-corrupting-utf-8-django-mysql-data
  • @StrikePricer 在基本形式中,我保留了接受字符集 UTF8。但是为了让它工作,我必须对 DB 进行字符集约束,它解决了这个问题。

标签: python django utf-8 character-encoding


【解决方案1】:

我不认为接受字符集是你的问题。默认情况下,所有表单都接受 UTF8 数据。 检查您处理输入数据的代码以获取以下语句:

value = str(request.POST['user_input'])
value = 'prefix' + request.POST['user-input'] 
# instead of u'prefix' + request.POST['user-input']

这是一个常见的错误,将 str() 用于可能包含非 ASCII 符号的用户输入。 还要检查您的 .py 文件是否保存为 UTF-8。上面的错误可能有很多原因...

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2022-10-05
    • 2011-02-28
    • 2016-07-05
    • 2013-08-20
    相关资源
    最近更新 更多