Django使用不同的字符集测试视图输入

时间:2013-06-13 14:54:23

标签: django unicode encoding character-encoding

我在尝试为我的观点生成测试时遇到了麻烦。我有一个视图,它消耗来自表单,某些字符的给定输入。这些字符被提交给DB,没有问题。

我所尝试的只是生成一个测试,以确保接受来自不同语言的不同角色。

我测试了这个:

Českýjazykneboličeština

此输入从HTML表单正确获取,并存储在DB中。当我尝试从测试中设置这个时,会发生一些奇怪的事情,并且视图会抛出错误,说

警告:字符串值不正确:'\ xC4 \ x8Cesk \ xC3 ...'代表第1行的“标题”列

我的代码简单如下:

str1 = "Český jazyk neboli čeština"
self.client.post(url, {"title": str1})

尝试所有组合:

str1 = u"..."
str1 = str1.encode('utf-8')
str1 = str1.decode('utf-8')

没有任何成功。

谁能告诉我我错过了什么?

提前谢谢

1 个答案:

答案 0 :(得分:0)

首先:确保在脚本的开头包含了这个:

#-*- coding: utf-8 -*-

那就是告诉解释器这个文件的编码是utf-8(确保它来自你的文本编辑器)

第二:而不是

str1 = "Český jazyk neboli čeština"

将str1声明为unicode,如下所示:

str1 = u"Český jazyk neboli čeština"

现在,我建议你如果要包含非ascii字符,请使用正确的unicode代码而不是字符来声明它们,以避免出现奇怪的编码问题。

str1 = u'\u010cesk\xfd jazyk neboli \u010de\u0161tina'

This is a useful page to check characters unicode code

希望这有帮助!