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

posted @ 2014-03-04 10:39  kingtigerhu  阅读(196)  评论(0)    收藏  举报