Поиск по сайту:

Как конвертировать файлы в кодировку 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

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

Наконец, вы можете связаться с нами, используя раздел комментариев ниже, чтобы задать любые вопросы или оставить отзыв.