def _unicode(p):
    """
    Used when force_unicode is True (default), the tags and values in the dict
    will be coerced as 'str' (or 'unicode' with Python2).   In Python3 they can
    otherwise end up as a mixtures of 'str' and 'bytes'.
"""
    q = {}
    for tag in p:
        vals = []
        for v in p[tag]:
            if type(v) is not str:                                                              # pragma: no cover
                v = v.decode('utf-8')
            vals.append(v)
        if type(tag) is not str:                                                                # pragma: no cover
            tag = tag.decode('utf-8')
        q[tag] = vals
    return q