1
Sylv 2016-11-17 15:16:07 +08:00 via iPhone
报的是 UnicodeEncodeError 错吗?
news_id 是不是有非 ascii 字符? |
2
gps32251070 OP |
3
gps32251070 OP https://gist.github.com/THK-1991/3d5c9f431e8a5c410110bbd9081546ea
之前第二段贴错了,修改不了,应该是上面的 |
4
gps32251070 OP @Sylv 这个 ID 是从浏览器链接获取的数字
|
5
holajamc 2016-11-17 15:24:22 +08:00
|
6
Sylv 2016-11-17 17:11:15 +08:00
"新闻 ID 是:%s" % news_id
会报错是因为 news_id 是 unicode 类型,"新闻 ID 是:%s" 则是 str 类型,在格式化字符串时如果有参数是 unicode 类型,会将 str 类型字符串转换为 unicode 后再能格式化,最后的字符串也就是 unicode 类型。而 Python2 默认编码是 ascii ,用 ascii 编码转换 str 类型的 "新闻 ID 是:%s" 为 unicode 时就会报 UnicodeDecodeError 错了,因为其中包含非 ascii 字符的汉字。 u"新闻 ID 是:%s" % news_id 没有问题是因为两个字符串都是 unicode 类型,那么格式化后输出的也是 unicode 字符串,没有涉及到编码转换,所以不会报错。 |
7
Sylv 2016-11-17 17:14:41 +08:00
Django 的 HttpResponse 方法应该 str 和 unicode 两种类型的字符串都能接收, Django 内部应该会自动处理编码转换,所以 HttpResponse("这是首页") 可以正常输出。
|
9
stamaimer 2016-11-17 23:28:18 +08:00
|