24. python urllib quote或者quote_plus 抛出keyError的解决方案
如果用urllib.quote_plus(u'基础')会抛出KeyError异常。:
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\web.py-0.36-py2.7.egg\web\application.py", line 237, in process
    return self.handle()
  File "C:\Python27\lib\site-packages\web.py-0.36-py2.7.egg\web\application.py", line 228, in handle
    return self._delegate(fn, self.fvars, args)
  File "C:\Python27\lib\site-packages\web.py-0.36-py2.7.egg\web\application.py", line 409, in _delegate
    return handle_class(cls)
  File "C:\Python27\lib\site-packages\web.py-0.36-py2.7.egg\web\application.py", line 385, in handle_class
    return tocall(*args)
  File "E:/outofmemory/svn/web\controllers\code.py", line 255, in GET
    pageUrl = 'http://outofmemory.cn/code-snippet/tagged/' + quote_plus(tag)
  File "C:\Python27\lib\urllib.py", line 1257, in quote_plus
    return quote(s, safe)
  File "C:\Python27\lib\urllib.py", line 1250, in quote
    return ''.join(map(quoter, s))
KeyError: u'\u57fa'
解决方法
# 解决办法是将Unicode类型先转换为str类型,然后在执行quote_plus
print urllib.quote_plus(str(u'基础'))
# 函数
def urlencode(val):
    if isinstance(val,unicode):
        return quote_plus(str(val))
    return quote_plus(val)
    http://www.cnblogs.com/makexu/

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号