Python JSON и Unicode

Обновление:

Я нашел ответ здесь: Python UnicodeDecodeError — я неправильно понимаю кодирование?

Мне нужно было явным образом декодироватьвходящий файл в Unicode, когда я его читал. Потому что в нем были символы, которые не подходили ни для ascii, ни для unicode. Таким образом, кодировка не удалась, когда она попала в эти символы.

Исходный вопрос

Итак, я знаю, что есть что-то, чего я просто не понимаю.

У меня есть массив строк Unicode, некоторые из которых содержат символы, отличные от Ascii.

Я хочу закодировать это как json с помощью

json.dumps(myList)

Выдает ошибку

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position 13: ordinal not in range(128)

Как мне это сделать? Я пытался установить для параметра sure_ascii значения True и False, но ни один из них не решает эту проблему.

Я знаю, что передаю строки Unicode в json.dumps. Я понимаю, что строка json предназначена для юникода. Почему бы мне просто не разобраться с этим?

Что я делаю не так?

Обновление: Дон Вопрос разумно предлагает предоставить трассировку стека. Вот. :

Traceback (most recent call last):
  File "importFiles.py", line 69, in 
    x = u"%s" % conv
  File "importFiles.py", line 62, in __str__
    return self.page.__str__()
  File "importFiles.py", line 37, in __str__
    return json.dumps(self.page(),ensure_ascii=False)
  File "/usr/lib/python2.7/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 204, in encode
    return ''.join(chunks)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position 17: ordinal not in range(128)

Обратите внимание, что это python 2.7, и ошибка все еще возникает с sure_ascii=False

Обновление 2: полезная ссылка Эндрю Уокера (в комментариях) заставляет меня думать, что я могу привести свои данные в удобный байтовый формат, прежде чем пытаться json.encode, выполнив что-то вроде:

data.encode("ascii","ignore")

К сожалению, это вызывает ту же ошибку.

6
задан Community 23 May 2017 в 10:28
поделиться