Использую 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)
Комментариев нет:
Отправить комментарий