Do not use codecs.decode(s, "unicode_escape"). It has two issues:
* When being passed a bytes literal, the returned value becomes a str
and the decoding operation is locale specific on Python3.
* When passing a unicode literal, it implicitly encodes to
sys.getdefaultencoding() (locale specific) on Python2.
Thus "unicode_escape" is a bad choice in all cases.
For Python2 string_escape works with str, but it hinders a potential
Python3 port of dak. Use it now, because Python3 is totally broken.
except IndexError:
continue
try:
- uid = codecs.decode(uid.decode("utf-8"), "unicode_escape")
+ # Do not use unicode_escape, because it is locale-specific
+ uid = codecs.decode(uid, "string_escape").decode("utf-8")
except UnicodeDecodeError:
uid = uid.decode("latin1") # does not fail
m = re_parse_maintainer.match(uid)