'Return a string that contains the parameters that must be signed.'

def get_normalized_parameters(self):

    items = []
    for (key, value) in self.iteritems():
        if (key == 'oauth_signature'):
            continue
        if isinstance(value, basestring):
            items.append((to_utf8_if_string(key), to_utf8(value)))
        else:
            try:
                value = list(value)
            except TypeError as e:
                assert ('is    not    iterable' in str(e))
                items.append((to_utf8_if_string(key), to_utf8_if_string(value)))
            else:
                items.extend(((to_utf8_if_string(key), to_utf8_if_string(item)) for item in value))
    query = urlparse.urlparse(self.url)[4]
    url_items = self._split_url_string(query).items()
    url_items = [(to_utf8(k), to_utf8(v)) for (k, v) in url_items if (k != 'oauth_signature')]
    items.extend(url_items)
    items.sort()
    encoded_str = urllib.urlencode(items)
    return encoded_str.replace('+', '%20').replace('%7E', '~')
