Тонкости настройки Django

Ошибка при сохранении 'latin-1' codec can't encode characters in position 36-37: ordinal not in range(256)

Ошибка при сохранении данных

Как исправить проблему с кодировкой (UnicodeEncodeError: 'latin-1' codec can't encode characters..) при взаимодействии с mysql?

Проблема возникает с внесением информации в БД Mysql. Но эта проблема не в БД и Python, a в языке системы (VPS/Ubuntu 18) в которой нужного языка не было установлено вообще.

Проверяем кодировку системы:

>> import sys
>> import locale

>> print(sys.getfilesystemencoding())
>> print(locale.getpreferredencoding())

По умолчанию на VPS может быть установлена только ISO 8859-1 ( Latin-1 ), поэтому нужно установить правильную локализацию.

Проверяем текущую локализацию:

# locale

Результат

LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC=C.UTF-8
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY=C.UTF-8
LC_MESSAGES="C.UTF-8"
LC_PAPER=C.UTF-8
LC_NAME=C.UTF-8
LC_ADDRESS=C.UTF-8
LC_TELEPHONE=C.UTF-8
LC_MEASUREMENT=C.UTF-8
LC_IDENTIFICATION=C.UTF-8
LC_ALL=
# localectl status
    System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105

Проверяем, какие локали поддерживаются:

# locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US
en_US.iso88591
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
ru_RU.utf8
ru_UA.utf8

Теперь нужно добавьте локали, которые нужны и их нет в списке (например ru):

# sudo locale-gen ru_RU  sudo locale-gen ru_RU.UTF-8

Запускаем команду обновления:

# sudo update-locale

Можно установить локализацию вручную:

# cat /etc/default/locale
	LANG=en_US.UTF-8

Или командой:

# update-locale LANG=de_DE.UTF-8

Если нужных пакетов нет, то нужно установить пакеты русификации для установленных программ, затем переключить в настройках язык и региональные стандарты.

Локализация для основных программ, которые не зависят от окружения:

# sudo apt-get install language-pack-ru

Локализация для компонентов окружения Gnome:

# sudo apt-get install language-pack-gnome-ru

Локализация для компонентов окружения KDE:

# sudo apt-get install language-pack-kde-ru

У окружений XFCE и LXDE переводы на разные языки устанавливаются вместе с программами.

Читать по теме
Интересные статьи