Хобрук: Ваш путь к мастерству в программировании

Python UnicodeDecodeError: ascii против utf-8

Почему следующий код по-прежнему использует «ascii» для декодирования строки. Разве я не сказал python использовать «utf-8» для декодирования строки? Кроме того, почему ignore не сработало?

print data.encode('utf-8', 'ignore')

UnicodeDecodeError: кодек ascii не может декодировать байт 0xc2 в позиции 12355:


  • То, как вы явно указываете Python обрабатывать строку, не влияет на то, что он неявно делает для ее вывода. 05.03.2015
  • @ IgnacioVazquez-Abrams Я не думаю, что это печать ... см. Мой ответ (я думаю, что это правильно ... Я не знаю, строковые кодировки иногда меня тоже подвешивают) 05.03.2015

Ответы:


1

Я предполагаю, что данные - это str

print isinstance(data,str)

должен, вероятно, сказать вам правду

encode хочет юникод, поэтому сначала он пытается decode преобразовать вашу строку в юникод, используя кодек ascii

поэтому вы получаете UnicodeDecodeError, а не UnicodeEncodeError

пытаться

print data.decode("utf-8","ignore")
05.03.2015
  • И поэтому Python 3 не будет автоматически преобразовывать строки байтов в строки Unicode — вы получите совершенно другую ошибку, которую гораздо легче интерпретировать. 06.03.2015
  • Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.