Django 中接收 URL 中的中文参数

前几天改造我那个电子课程表时,有个 URL 传递的参数我直接用了中文,像这样:/tt/getxml/?term=2008春。在 IE 中使用很正常,在 Django 里面接收之后用 request.GET.get('term') 直接就可以得到“2008春”。但是后来我用 FF 和 Safari 测试的时候就不行了。研究了一下发现还是得编码成 UTF-8 的形式传递才行。

  在客户端用 Javascript 生成 URL 时,用 encodeURI('2008春') 编码一下形成:/tt/getxml/?term=%E6%98%A5。然后再在 Django 那端用 urllib.unquote(request.GET.get('term')).decode('utf8') 接收就正常了。

  另外,用 Django 的 ORM 读取数据库,并且与 Python 自带的 xml.dom 一起来生成 XML 数据时,有中文的时候就不正常。主要还是编码问题。比如 term.name 是中文的,那么就要用 str(term.name).decode('utf-8') 来写入 xml.dom 生成的结点中,最后用 obj.toxml('utf-8') 来输出 XML 的内容。这样得出的 XML 是 UTF-8 编码的,并且在头那里会有一个 encoding="utf-8" 的属性,这个 XML 才能正确被其它地方解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值