Это в Python 2.4. Вот моя ситуация. Я вытаскиваю строку из базы данных, и она содержит пометку 'o' (\ xf6). В этот момент, если я запускаю type (value), он возвращает str. Затем я пытаюсь запустить .decode ('utf-8') и получаю сообщение об ошибке (кодек utf8 не может декодировать байты в позиции 1-4).
На самом деле моя цель - просто заставить тип (значение) возвращать юникод. Я нашел предыдущий вопрос
у этого была некоторая полезная информация, но пример из выбранного ответа, кажется, не работает для меня. Здесь я что-то не так делаю?
Вот код для воспроизведения:
Name = 'w\xc3\xb6rner'.decode('utf-8')
file.write('Name: %s - %s\n' %(Name, type(Name)))
На самом деле я никогда не доходил до оператора write, потому что он не срабатывает при первом утверждении.
Спасибо за вашу помощь.
Edit:
Я проверил, что кодировка БД - utf8. Поэтому в моем коде для воспроизведения я изменил «\ xf6» на «\ xc3 \ xb6», и сбой все еще происходит. Есть ли разница между utf-8 и utf8?
Подсказка по использованию кодеков для записи в файл удобна (я обязательно буду ее использовать), но в этом сценарии я пишу только в файл журнала для целей отладки.