Я хотел бы включить большую сжатую строку в пакет json, но у меня возникли некоторые трудности.
import json,bz2
myString = "A very large string"
zString = bz2.compress(myString)
json.dumps({ 'compressedData' : zString })
, что приведет к
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 10-13: invalid data
Очевидным решением является bz2'ing всей структуры json, но давайте просто предположим, что я использую API-интерфейс blackbox, который выполняет jsonкодирование, и он хочет диктовать.
Кроме того, я просто использую bz2 в качестве примера, меня не волнует, что на самом деле алгоритм, хотя я заметил то же самое поведение с zlib.
Я могу понять, почему эти две библиотеки сжатия не создают вывод, совместимый с utf-8, но есть ли решение, которое может эффективно сжимать строки utf-8?Эта страница выглядела как золотой рудник http://unicode.org/faq/compression.html, но я не смог найти никакой соответствующей информации о питоне.