':return: A <unicode> representation of the URL'

@property
@memoized
def url_string(self):

    data = (self.scheme, self.netloc, self.path, self.params, unicode(self.querystring), self.fragment)
    calc = urlparse.urlunparse(data)
    if (not isinstance(calc, unicode)):
        calc = unicode(calc, self.encoding, 'replace')
    return calc
