code: def parse_string(data, unquote=default_unquote):
      
      if data is None:
          return None
  
      # We'll soon need to unquote to recover our UTF-8 data.
      # In Python 2, unquote crashes on chars beyond ASCII. So encode functions
      # had better not include anything beyond ASCII in data.
      # In Python 3, unquote crashes on bytes objects, requiring conversion to
      # str objects (unicode) using decode().
      # But in Python 2, the same decode causes unquote to butcher the data.
      # So in that case, just leave the bytes.
      if isinstance(data, bytes):
          if sys.version_info > (3, 0, 0):  # pragma: no cover
              data = data.decode('ascii')
      # Recover URL encoded data
      unquoted = unquote(data)
      # Without this step, Python 2 may have good URL decoded *bytes*,
      # which will therefore not normalize as unicode and not compare to
      # the original.
      if isinstance(unquoted, bytes):
          unquoted = unquoted.decode('utf-8')
      return unquoted
docs: Decode URL-encoded strings to UTF-8 containing the escaped chars.