Ошибка сбоя локали кодировки UTF-8 в консоли Linux возникает, когда переменная окружения LANG или LC_ALL не установлена на поддерживаемую локаль с кодировкой UTF-8. Исправить это можно через установку правильной локали в файле конфигурации или через команды консоли. Проблема решается за 3–5 минут.
Причины проблемы
- Переменная окружения
LANGустановлена на локаль без UTF-8 (например,Cилиen_US.ISO8859-1) - Требуемая локаль с UTF-8 не сгенерирована в системе
- Файл
/etc/locale.genне содержит нужную локаль - Переменные
LC_ALL,LC_CTYPEилиLC_MESSAGESпереопределяют глобальные настройки - После переустановки системы или обновления локали конфигурация не была применена
Пошаговая инструкция
- Откройте консоль и выполните команду
localeчтобы проверить текущие настройки локали. - Если видите
CилиPOSIXвместоen_US.UTF-8(или другой нужной локали), переходите к следующему шагу. - Выполните команду
locale -aчтобы увидеть список доступных локалей. - Если нужная локаль (например,
ru_RU.UTF-8) отсутствует в списке, откройте файл/etc/locale.genс правами администратора:sudo nano /etc/locale.gen - Найдите строку с нужной локалью (например,
# ru_RU.UTF-8 UTF-8) и удалите символ#в начале. - Сохраните файл: нажмите
Ctrl+O, затемEnter, потомCtrl+X. - Выполните команду
sudo locale-genчтобы сгенерировать локали. - Установите локаль глобально:
sudo update-locale LANG=ru_RU.UTF-8(заменитеru_RUна вашу локаль, напримерen_US). - Выполните
source /etc/default/localeчтобы применить изменения в текущей сессии. - Проверьте результат командой
locale— должны увидеть UTF-8 во всех параметрах. - Перезагрузитесь:
sudo rebootили выйдите из сессии и зайдите заново.
Часто задаваемые вопросы
Как быстро проверить текущую локаль без полного списка? Выполните echo $LANG — она выведет только значение переменной окружения.
Что делать, если строки в /etc/locale.gen закомментированы решёткой? Удалите символ # в начале строки с нужной локалью, сохраните файл и выполните sudo locale-gen.
Как установить UTF-8 только для текущей сессии консоли? Выполните export LANG=ru_RU.UTF-8 (замените на вашу локаль) — изменение будет действовать только до перезагрузки или закрытия терминала.