Я использую py-postgresql в качестве драйвера базы данных, когда вы выбираете строку с не-ASCII-символами, ответ заменяет символ "", что я могу сделать, чтобы изменить его на правильный символ?
Это мой код:
class decodify:
def __init__(self):
db = pgDriver.connect(user = 'demo', password='demo' database='hidura_karinapp', host='localhost', port='5432')
d = db.prepare("""SELECT modules_reg.code FROM modules_reg, domain_reg, sbdomain_reg, sbdomdl_asc where(modules_reg.id = sbdomdl_asc.module AND modules_reg.mdname = 'police' AND sbdomain_reg.id = sbdomdl_asc.domain AND sbdomain_reg.domain = domain_reg.id AND domain_reg.dname = 'bmsuite.com' AND sbdomain_reg.sbname = 'www')""")
s = d()
print(s)
if __name__ == '__main__':
decodify()
Вы устанавливаете client_encoding
? Теоретически py-postgresql должен автоматически использовать правильный client_encoding
. Либо вы устанавливаете его на что-то неправильно, либо что-то не так, как оно его обнаруживает, и в этом случае вы должны его установить. Вопрос в том, к чему.:)
Вы можете использовать psycopg2, который поддерживает unicode...
Какую кодировку символов вы используете в базе данных? Проверьте параметр client_encoding в файле postgresql.conf и посмотрите, есть ли этот utf-8.
Что я делаю - это трюк, чтобы установить кодировку по умолчанию Python так же, как и кодировку базы данных. Моя база данных - UTF-8, поэтому мне нужно запустить скрипты верхнего уровня, например:
#!/usr/bin/python -S
import sys
sys.setdefaultencoding("utf-8")
import site
Все строки встречаются чистыми, без перевода. Это с Python 2.x. Python 3 может быть другим.