Как конвертировать файлы в кодировку UTF-8 в Linux

Новости

В этой статье мы поговорим о кодировке символов и рассмотрим примеры преобразования файлов из одной кодировки в другую с помощью инструмента командной строки. Затем, мы рассмотрим, как конвертировать несколько файлов из любой кодировки в кодировку UTF-8 в Linux.

Как вы, знаете, компьютер не понимает и не хранит буквы, цифры или что-либо еще. Он все запоминает и воспринимает через биты информации. Бит имеет только два возможных значения, то есть 0 или 1, true или false. Все остальное: буквы, цифры, изображения, должны быть представлены в битах для того чтобы компьютер мог их обрабатывать.

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

Существуют различные схемы кодирования, такие как ASCII, ANSI, Unicode и другие. Ниже приведен пример кодировки ASCII.

Character bits
A 01000001
B 01000010
и т.д. 

 

Инструмент командной строки iconv используется для преобразования текста из одной формы кодирования в другую.

Вы можете проверить кодировку файла с помощью команды file, используя опцию -i или -mime, которая позволяет выводить строку типа mime, как в приведенных ниже примерах:

$ file -i Car.java
$ file -i CarDriver.java

 

Check-File-Encoding-in-Linux

 

Синтаксис использования iconv выглядит следующим образом:

$ iconv option
$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile

 

Где -f или —from-code определяет входное кодирование, а -t или -to-encoding задает кодировку вывода.

Чтобы перечислить все известные кодировки символов, выполните следующую команду:

$ iconv -l 

 

List-Coded-Charsets-in-Linux

 

 

Преобразование файлов из UTF-8 в кодировку ASCII

Теперь перейдем к тому, как конвертировать из одной системы кодирования в другую. Приведенная ниже команда преобразуется из ISO-8859-1 в кодировку UTF-8.

Рассмотрим файл с именем input.file, который содержит символы:

� � � �

 

Начнем с проверки кодировки символов в файле, а затем просмотра содержимого файла. Вкратце, мы можем преобразовать все символы в кодировку ASCII.

После запуска команды iconv мы проверяем содержимое выходного файла и новую кодировку символов, как показано ниже.

$ 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 

 

Convert-UTF-8-to-ASCII-in-Linux

 

Примечание. Если в кодировку добавлена ​​строка //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».

Для получения дополнительной информации просмотрите страницу iconv man.

$ man iconv

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

 

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Новости

Больше похожих постов

1 комментарий. Оставить новый

  • пишет что нет файла или директории, всего лишь поменял txt на php.

    что не так в строке $CONVERT «$file» -o «${file%.txt}.utf8.converted»

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Most Viewed Posts
Меню