4

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

Vindict
  • 331

1 Answers1

2

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)
jfs
  • 52,361