python 字符转换问题
python遇到的一个问题
今天学习python遇到了几个问题,做下记录
#!/usr/bin/python
import urllib
import sys
if __name__ == '__main__':
if len(sys.argv) > 1:
str = sys.argv[1]
str = unicode(str, 'gbk')
else:
str = "中文"
print str
params = {}
params['name'] = str.encode("UTF-8")
print urllib.urlencode(params)
[root@zong py]# python ceshi.py
File "ceshi.py", line 10
SyntaxError: Non-ASCII character '\xe4' in file ceshi.py on line 10, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
上面报错因为没有指定成utf8 所以中文报错解决方法:
添加:
# -*- coding: utf-8 -*-
[root@zong py]# python ceshi.py
中文
Traceback (most recent call last):
File "ceshi.py", line 17, in <module>
params['name'] = str.encode("UTF-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
还是因为字符问题。在Windows系统转Linux系统时,字符问题很容易出现,报错解决方法:
在出现问题的网页添加
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
最后修改完整的脚本
[root@zong py]# more ceshi.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
import sys
if __name__ == '__main__':
if len(sys.argv) > 1:
str = sys.argv[1]
str = unicode(str, 'gbk')
else:
str = "中文"
print str
reload(sys)
sys.setdefaultencoding('utf-8')
params = {}
params['name'] = str.encode("UTF-8")
print urllib.urlencode(params)
[root@zong py]# python ceshi.py
中文
name=%E4%B8%AD%E6%96%87

浙公网安备 33010602011771号