Как поменять кодировку базы данных с 'latin-1' на 'utf-8'?
Не могу понять как поменять кодировку базы данных с 'LATIN-1' на UTF-8.
Нашла несколько решений, но безрезультатно...
Вот трейс:
File "/root/FreeSticks/check_registration/reg.py", line 23, in check
postgreSQL.insert(f"INSERT INTO public.users (user_id, user_name) VALUES ('{sender_id[0].id}', '{user_name}')")
File "/root/FreeSticks/database_management/postgreSQL.py", line 88, in insert
res = sql.insert()
File "/root/FreeSticks/database_management/postgreSQL.py", line 50, in insert
return self.cur.execute(self.req, self.req_format)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 68-77: ordinal not in range(256)
Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </> Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
Надо на чистом сервере апгрейдить ОС и после устанавливать постгре. Скорее всего в системе по дефолту latin-1 стоит и utf-8 локалы не установлены.
Отправьте в терминал такую команду localectl status
Покажет локализацию устройства, если заканчивается на .UTF-8 то всё ок.
Если нет то пробуйте обновить. update-locale LANG=ru_RU.UTF-8
Если выходит ошибка invalid locale settings то обновите всю ОС
В убунту/дебиан такая команда apt upgrade
В процессе апргрейда появится окошко с выбором кодировок, выберите любых несколько которые оканчиваются на .UTF-8
затем идёте в постгре sudo -i -u postgres psql
и отправьте такую команду UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8');