Attempts to decode the inputted unicode/string variable using the
    given encoding type.  If no encoding is provided, then it will attempt
    to use one of the ones available from the default list.
    
    :param      text     | <variant>
                encoding | <str> || None
    
    :return     <unicode>

def decoded(text, encoding=DEFAULT_ENCODING):
    """
    Attempts to decode the inputted unicode/string variable using the
    given encoding type.  If no encoding is provided, then it will attempt
    to use one of the ones available from the default list.
    
    :param      text     | <variant>
                encoding | <str> || None
    
    :return     <unicode>
    """
    # unicode has already been decoded
    if type(text) == unicode_type:
        return text

    elif type(text) != bytes_type:
        try:
            return unicode_type(text)
        except StandardError:
            try:
                text = bytes_type(text)
            except StandardError:
                msg = u'<< projex.text.decoded: unable to decode ({0})>>'
                return msg.format(repr(text))

    if encoding:
        try:
            return text.decode(encoding)
        except StandardError:
            pass

    for enc in SUPPORTED_ENCODINGS:
        try:
            return text.decode(enc)
        except StandardError:
            pass

    return u'????'