Страницы

Поиск по вопросам

пятница, 15 марта 2019 г.

Возвращаемая строка содержит нечитаемые символы

Использую psycopg2 для работы с Postgress БД. Получаю вот такое вот строковое значение при запросе к БД: " insider’s guide to a woman’s ". Должно быть insider's guide to a woman's. Помогите найти решение


Ответ

insider’s guide это так называемые кракозябы (даже президенты от этого не застрахованы), которые получаются когда текст, закодированный в одной кодировке показан в другой несовместимой кодировке:
>>> print(u"insider’s guide to a woman’".encode('cp1251').decode('utf-8')) insider’s guide to a woman’
В вашем случае utf-8 текст показывался, используя cp1251 кодировку.
Чтобы уменьшить вероятность подобных ошибок, храните текст как Юникод, а не байты: преобразуйте на входе байты в Юникод, используйте Юникод внутри программы, кодируйте в байты на выходе (если необходимо) ☯:
unicode_text = bytestring.decode(character_encoding) bytestring = unicode_text.encode(character_encoding)

Комментариев нет:

Отправить комментарий