Are you sure it's only `/` and `+` that cause problems? It smells to me like we should use `urllib.quote()` instead. By default, `urllib.quote()` will allow `/` but you can override it like this:

```
>>> urllib.quote('/+&@?')
'/%2B%26%40%3F'
>>> urllib.quote('/+&@?', '')
'%2F%2B%26%40%3F'
```
But mind you, if the string is a unicode string you need to convert it first. Like this:

```
def clean(s):
    if isinstance(s, unicode):
        s = s.encode('utf-8')
    return urllib.quote(s, '')
```
...otherwise you might get weird KeyErrors on the unicode characters which, when converted, becomes regular byte string pieces.