使用UTF-8避免在所有django表单提交中使用无效字节序列

时间:2012-05-29 12:00:25

标签: python django utf-8 character-encoding

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

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

将来如何避免这些问题?我是否需要更改默认的AdminSite或对已有100000个用户的数据库进行更改?

1 个答案:

答案 0 :(得分:0)

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

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

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