| 184 | |
| 185 | |
| 186 | def decode_unicode(coll): |
| 187 | if isinstance(coll, list): |
| 188 | for no, entry in enumerate(coll): |
| 189 | if isinstance(entry, (dict, list)): |
| 190 | coll[no] = decode_unicode(entry) |
| 191 | else: |
| 192 | if isinstance(entry, str): |
| 193 | try: |
| 194 | coll[no] = str(entry) |
| 195 | except UnicodeEncodeError: |
| 196 | pass |
| 197 | elif isinstance(coll, dict): |
| 198 | keys, vals = list(coll.keys()), list(coll.values()) |
| 199 | for key, val in zip(keys, vals): |
| 200 | if isinstance(val, (dict, list)): |
| 201 | coll[key] = decode_unicode(val) |
| 202 | elif isinstance(val, str): |
| 203 | try: |
| 204 | coll[key] = str(val) |
| 205 | except UnicodeEncodeError: |
| 206 | pass |
| 207 | coll[str(key)] = coll.pop(key) |
| 208 | return coll |