使用get获得参数, 当参数是中文的时候, web.py会报错.
大概是因为web.py没有正确判断参数的编码, 调用错了函数. (正确的情况下应该是safeunicode).
出错的地方一般在:
utils.py
- def safestr(obj, encoding='utf-8'):
- r"""Converts any given object to utf-8 encoded string.
- >>> safestr('hello')
- 'hello'
- >>> safestr(u'/u1234')
- '/xe1/x88/xb4'
- >>> safestr(2)
- '2'
- """
- if isinstance(object, unicode):
- return obj.encode('utf-8')
- elif isinstance(obj, str):
- return obj
- else:
- return str(obj)
解决办法:
在主程序的最前面:
- import sys
- if sys.getdefaultencoding() != 'utf-8':
- reload(sys)
- sys.setdefaultencoding('utf-8')
强行重新加载一下.
-----------------
后记:
在处理GET参数的时候, 最好用 web.safestr()处理一下.