+def decode_dict(d, encoding):
+ new_d = {}
+ for k in d:
+ v = d[k]
+ k = k.decode(encoding)
+ if isinstance(v, dict):
+ v = decode_dict(v, encoding)
+ elif isinstance(v, list):
+ v = decode_list(v, encoding)
+ elif isinstance(v, bytes):
+ v = v.decode(encoding)
+ new_d[k] = v
+ return new_d
+
+
+def decode_list(l, encoding):
+ new_l = []
+ for v in l:
+ if isinstance(v, dict):
+ v = decode_dict(v, encoding)
+ elif isinstance(v, list):
+ v = decode_list(v, encoding)
+ elif isinstance(v, bytes):
+ v = v.decode(encoding)
+ new_l.append(v)
+ return new_l
+
+