Django 中接收 URL 中的中文参数
2008-08-28 22:47
260 查看
前几天改造我那个电子课程表时,有个 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 才能正确被其它地方解析。
在客户端用 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 才能正确被其它地方解析。
相关文章推荐
- Django 中接收 URL 中的中文参数
- 再不更改web.config文件的条件下---Script 中url传中文参数(解密) 接收时解密。。。。
- strust2接收URL参数为中文是乱码问题的解决
- url 后缀参数中带中文,后台接收乱码问题
- asp.net接收URL中文参数的乱码解决方案
- Url传递参数和接收参数时的中文乱码处理
- spring mvc 框架URL接收中文参数的乱码解决方案
- C# Asp.net url中文参数 接收乱码
- URL传参数,服务器端接收出现中文乱码
- spring mvc 框架URL接收中文参数的乱码解决方案
- IE浏览器,URL中有中文参数,在一个页面中接收此中文参数,显示时却乱码
- URL中文传参,后台接收参数乱码
- URL参数带中文,后台接收乱码解决方案
- indy httpserver 接收URL包含中文参数乱码的问题
- asp.net传递的中文url参数在asp页面如何正确接收
- js 处理url中文参数 java端接收处理
- URL参数带中文,后台接收乱码解决方案
- js接收url传递的中文参数
- url 传递中文参数乱码问题的终极解决方法。
- jsp页面 URL传中文参数到Action里面出现乱码,用过滤器和控制器都解决