kast3t
@kast3t

Как поменять кодировку базы данных с '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)
  • Вопрос задан
  • 328 просмотров
Решения вопроса 1
@Jack444
Надо на чистом сервере апгрейдить ОС и после устанавливать постгре. Скорее всего в системе по дефолту 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');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы