Как конвертировать файлы в кодировку UTF-8 в Linux
В этом руководстве мы опишем, что такое кодировка символов, и рассмотрим несколько примеров преобразования файлов из одной кодировки символов в другую с помощью инструмента командной строки. И, наконец, мы рассмотрим, как преобразовать несколько файлов из любого набора символов (кодировки) в кодировку UTF-8 в Linux.
Как вы, возможно, уже поняли, компьютер не понимает и не хранит буквы, цифры или что-либо еще, что мы, люди, можем воспринимать, кроме битов. Бит имеет только два возможных значения: либо 0
, либо 1
, true
или false
, да
или нет
. Все остальное, например буквы, цифры, изображения, должно быть представлено в битах, чтобы компьютер мог их обработать.
Проще говоря, кодировка символов – это способ сообщить компьютеру, как интерпретировать необработанные нули и единицы в реальные символы, где символ представлен набором чисел. Когда мы печатаем текст в файле, слова и предложения, которые мы формируем, состоят из разных символов, а символы организованы в кодировку.
Существуют различные схемы кодирования, такие как ASCII, ANSI, Unicode и другие. Ниже приведен пример кодировки ASCII.
Character bits
A 01000001
B 01000010
В Linux инструмент командной строки icon используется для преобразования текста из одной формы кодировки в другую.
Вы можете проверить кодировку файла с помощью команды file, используя флаг -i
или --mime
, который включает печать типа mime. строка, как в примерах ниже:
file -i Car.java
file -i CarDriver.java
Синтаксис использования icon следующий:
iconv option
iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
Где -f
или --from-code
означает входную кодировку, а -t
или --to-encoding
указывает выходное кодирование.
Чтобы просмотреть все известные наборы кодированных символов, выполните команду ниже:
iconv -l
Конвертируйте файлы из кодировки UTF-8 в ASCII
Далее мы научимся конвертировать из одной схемы кодирования в другую. Приведенная ниже команда преобразует кодировку из ISO-8859-1 в UTF-8.
Рассмотрим файл с именем input.file
, который содержит символы:
� � � �
Начнем с проверки кодировки символов в файле, а затем просмотрим содержимое файла. В частности, мы можем преобразовать все символы в кодировку ASCII.
После запуска команды icon мы проверяем содержимое выходного файла и новую кодировку символов, как показано ниже.
file -i input.file
cat input.file
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
cat out.file
file -i out.file
Примечание. Если к кодировке добавляется строка //IGNORE
, отображаются символы, которые невозможно преобразовать, и отображается ошибка. после преобразования.
Опять же, предположим, что строка //TRANSLIT
добавлена в кодировку, как в примере выше (ASCII//TRANSLIT), преобразуемые символы транслитерируются по мере необходимости и, если возможно, . Это означает, что в случае, если символ не может быть представлен в целевом наборе символов, его можно аппроксимировать одним или несколькими похожими символами.
Следовательно, любой символ, который не может быть транслитерирован и не входит в целевой набор символов, заменяется в выводе вопросительным знаком (?)
.
Преобразование нескольких файлов в кодировку UTF-8
Возвращаясь к нашей основной теме: чтобы преобразовать несколько или все файлы в каталоге в кодировку UTF-8, вы можете написать небольшой сценарий оболочки с именем encoding.sh следующим образом:
#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING"
#loop to convert multiple files
for file in *.txt; do
$CONVERT "$file" -o "${file%.txt}.utf8.converted"
done
exit 0
Сохраните файл, затем сделайте скрипт исполняемым. Запустите его из каталога, где находятся ваши файлы (*.txt
).
chmod +x encoding.sh
./encoding.sh
Важно. Вы также можете использовать этот сценарий для общего преобразования нескольких файлов из одной заданной кодировки в другую, просто поиграйте со значениями FROM_ENCODING
и TO_ENCODING
, не забывая имя выходного файла "$ {file%.txt}.utf8.converted"
.
Для получения дополнительной информации просмотрите справочную страницу icon.
man iconv
Подводя итог этому руководству, можно сказать, что понимание кодирования и способы преобразования из одной схемы кодировки символов в другую являются необходимыми знаниями для каждого пользователя компьютера, особенно для программистов, когда дело доходит до работы с текстом.
Наконец, вы можете связаться с нами, используя раздел комментариев ниже, чтобы задать любые вопросы или оставить отзыв.