У меня строка Unicode - под Python 2.7.кодировка строки юникода для сжатия lzma
У меня также есть головная боль сегодня - настоящая, которая не была вызвана Unicode - и не может сосредоточиться на проблеме столько, сколько мне нужно. Я более бессмыслен, чем мыслитель, до тех пор, пока количество пыльцы не упадет.
Мне нужно сжать мою строку, используя backports.lzma
. Иногда я получаю сообщение об ошибке, потому что «строка» не является ASCII-совместимым String
, а объектом Unicode
, который использует некоторые неизвестные в настоящее время набор символов (вероятно, UTF-8, но без гарантии). lzma.compress
хочет String
или bytes()
совместимый объект.
Я не обязательно кодирую кодировку Юникода в этой точке моего кода. Я просто знаю, что это объект unicode. Обычно в подобной ситуации я знаю кодировку и могу действовать соответствующим образом. Я также обычно не забочусь о том, чтобы потерять одного или двух символов в перекодировке. На этот раз мне все равно.
Это приводит меня несколько вопросов:
• Существует ли безопасное кодирование, чтобы выбрать то, что будет также несколько минимальным размером (для большинства UTF-8 Docs)?
• Нужно ли беспокоиться о обратной совместимости при декодировании и предыдущих сжатых документах? Я не полностью читал документы lzma
(мой плохой) и не понимал, что ему нужен String
.
Спасибо. Я знал, что UTF8 расшифровывает ASCII, но беспокоился, если мне нужно было выбрать какую-то другую кодировку, чтобы все прошло. Кстати, краткость ваших ответов невероятно совершенна. –
Все кодировки UTF могут кодировать все символы Юникода, по определению. UTF-8 является наименее расточительным, когда дело доходит до кодирования текста ASCII. –