Some broadcasts can have different charsets (such as iso-8859-1) but
we assume utf-8 unless user has set it correctly. So when decode fails
we get an exception. So we now attempt to decode with error
replacement so user sees incorrect character.
This gives "u'Denise Th\ufffd\ufffd':" as the string returned instead
when the received name contains an é that is in iso-8859-1 instead of
utf-8.
try:
item = data[:dlen].decode('utf-8')
except:
- item = data[:dlen]
+ item = data[:dlen].decode(errors='replace')
elif typ == HMF_BIN:
item = HMFBin(data[:dlen])
elif typ == HMF_S64:
if islist:
msg.append(item)
else:
- msg[name.decode()] = item
+ try:
+ n = name.decode(errors="replace")
+ except:
+ n = name
+ msg[n] = item
data = data[dlen:]
return msg