Python post中文参数传递出错的一种解决办法
2015-08-11 16:21
615 查看
参数实例:
两种方法对比程序示例:
程序运行结果:
对比发现,编码是不一致的,所以遇到中文参数传递出错,先对中文进行编码再做替换是一种可行方法。
本人利用方法二解决了Python2.7中的中文参数传递失败的问题。
注:本方法仅用于本实例,参数为双层json数据包装的格式,仅供参考。
values = {"json":{ "name": "张三", "number":"一号" } }
两种方法对比程序示例:
#coding=utf-8 import urllib a = urllib.quote('张三') b = urllib.quote('一号') print "先将‘张三’进行urlencode编码为:",a print "先将‘一号’进行urlencode编码为:",b data1 = {"json":{ #方法1,直接放入中文 "name": "张三", "number":"一号" } } data1 = urllib.urlencode(data1) print "直接将中文放入参数后实际所传递的参数:\n",data1 data2 = {"json":{ #方法2,间接放入中文 "name": "%E5%BC%A0%E4%B8%89", #代替张三 "number":"%E4%B8%80%E5%8F%B7" #代替一号 } } data2 = urllib.urlencode(data2) print "先将中文编码后代入,实际所传递的参数:\n",data2
程序运行结果:
先将‘张三’进行urlencode编码为: %E5%BC%A0%E4%B8%89 先将‘一号’进行urlencode编码为: %E4%B8%80%E5%8F%B7 直接将中文放入参数后实际所传递的参数: json=%7B%27name%27%3A+%27%5Cxe5%5Cxbc%5Cxa0%5Cxe4%5Cxb8%5Cx89%27%2C+%27number%27%3A+%27%5Cxe4%5Cxb8%5Cx80%5Cxe5%5Cx8f%5Cxb7%27%7D 先将中文进行编码后代入,实际所传递的参数: json=%7B%27name%27%3A+%27%25E5%25BC%25A0%25E4%25B8%2589%27%2C+%27number%27%3A+%27%25E4%25B8%2580%25E5%258F%25B7%27%7D
对比发现,编码是不一致的,所以遇到中文参数传递出错,先对中文进行编码再做替换是一种可行方法。
本人利用方法二解决了Python2.7中的中文参数传递失败的问题。
注:本方法仅用于本实例,参数为双层json数据包装的格式,仅供参考。
相关文章推荐
- Python操作mysql(增删改查)
- DFA最小化 -- Hopcroft算法 Python实现
- Python学习第二天
- lda模型的python实现
- 【转载】Python Version 2.7 required which was not found in the registry 问题解决
- Python 中的隐藏特性
- 关于Python的super用法研究
- Python入门 列表生成式
- Python基础教程(第2版 修订版) 勘误合集 *持续更新
- Python连接mysql
- Python3检验pdf文件是否有效
- python不同package下相互调用
- 《Python基础教程(第2版)》学习笔记(二):
- windows下扩展python遇见(Unable to find vcvarsall.bat)问题
- Python Requests
- Python版RenameURLCode
- Python中逗号的作用
- Python安装模块
- ★★★★[转载]Python学习笔记一:数据类型转换★★★★
- Python 加密 md5