@classmethod
def load(cls, data):
    """
        Convert "UserComment" value in exif format to str.

        :param bytes data: "UserComment" value from exif
        :return: u"foobar"
        :rtype: str(Unicode)
        :raises: ValueError if the data does not conform to the EXIF specification,
        or the encoding is unsupported.
        """
    if len(data) < cls._PREFIX_SIZE:
        raise ValueError('not enough data to decode UserComment')
    prefix = data[:cls._PREFIX_SIZE]
    body = data[cls._PREFIX_SIZE:]
    if prefix == cls._UNDEFINED_PREFIX:
        raise ValueError('prefix is UNDEFINED, unable to decode UserComment')
    try:
        encoding = {cls._ASCII_PREFIX: cls.ASCII, cls._JIS_PREFIX: cls._JIS,
            cls._UNICODE_PREFIX: cls._UNICODE}[prefix]
    except KeyError:
        raise ValueError('unable to determine appropriate encoding')
    return body.decode(encoding, errors='replace')
