Кодировка файлов в Linux при необходимости меняется с помощью утилиты iconv и аналогов.
Смену кодировок чаще всего приходится использовать при работе с базами данных когда какая-то информация на сайте отображается некорректно
Текущее значение кодировки файла можно посмотреть выполнив enca -L [language] FILENAME
Если пакета нет в системе — он устанавливается из репозитория, в Ubuntu так:
apt install enca
В примере на скриншоте представлена проверка текущей кодировки текстового файла:
Значение кодировки 7bit ASCII это то же самое, что UTF-8. Также можно использовать утилиту file с ключом -i.
Использование iconv для изменения кодировки файлов в Linux
Кодировка файлов в Linux изменяется при помощи стандартной утилиты iconv
iconv позволяет перекодировать текстовые документы, в том числе — дампы баз данных, которые потом можно загружать в непосредственно в БД
Введя в консоли iconv --list
можно получится список всех кодировок, которые поддерживаются.
root@note:/tmp# iconv --list The following list contains all the coded character sets known. This does not necessarily mean that all combinations of these names can be used for the FROM and TO command line parameters. One coded character set can be listed with several different names (aliases). 437, 500, 500V1, 850, 851, 852, 855, 856, 857, 858, 860, 861, 862, 863, 864, ...... US-ASCII, US, UTF-7, UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, UTF7, UTF8, UTF16, UTF16BE, UTF16LE, UTF32, UTF32BE, UTF32LE, VISCII, WCHAR_T, WIN-SAMI-2, WINBALTRIM, WINDOWS-31J, WINDOWS-874, WINDOWS-936, WINDOWS-1250, WINDOWS-1251, WINDOWS-1252, WINDOWS-1253, WINDOWS-1254, WINDOWS-1255, WINDOWS-1256, WINDOWS-1257, WINDOWS-1258,
Список очень большой, приведена только часть вывода. Между доступными кодировками можно проводить преобразования. Утилита работает с любыми типами файлов.
iconv для преобразования кодировки документа используется так:
iconv -f cp1251 -t UTF-8 -o database.sql > database_utf8.sql
-f — исходная кодировка (from)
-t — кодировка, в которую преобразуется документ (to)
Результат преобразования можно сразу загружать в БД.
(сделав предварительно бэкап предыдущего состояния)
iconv -f cp1251 -t UTF-8 -o database.sql | mysql -u root -p db1
Исходный файл при этом не изменяется.
В случае с SQL дампом базы данных бывает необходимо с помощью утилиты sed или с помощью текстового редактора вручную заменить все строки с указанием одной кодировки на аналогичные строки с указанием другой кодировки.
Читайте также про изменение изображений с помощью утилиты convert из пакета imagemagick