В этой статье мы поговорим о UTF-8, кодировке символов и рассмотрим примеры преобразования файлов из одной кодировки в другую с помощью инструмента командной строки. Затем, мы рассмотрим, как конвертировать несколько файлов из любой кодировки в кодировку UTF-8 в Linux.
Как вы, знаете, компьютер не понимает и не хранит буквы, цифры или что-либо еще. Он все запоминает и воспринимает через биты информации. Бит имеет только два возможных значения, то есть 0 или 1, true или false. Все остальное: буквы, цифры, изображения, должны быть представлены в битах для того чтобы компьютер мог их обрабатывать.
Проще говоря, кодировка символов — это способ информирования компьютера о том, как интерпретировать необработанные нули и единицы в действительные символы, где символ представлен набором чисел. Когда мы вводим текст в файл, слова и предложения, которые мы формируем, накапливаются из разных символов, а символы группируются в кодировку.
Существуют различные схемы кодирования, такие как ASCII, ANSI, Unicode и другие. Ниже приведен пример кодировки ASCII.
Инструмент командной строки iconv используется для преобразования текста из одной формы кодирования в другую.
Вы можете проверить кодировку файла с помощью команды file, используя опцию -i или -mime, которая позволяет выводить строку типа mime, как в приведенных ниже примерах:
Синтаксис использования iconv выглядит следующим образом:
Где -f или —from-code определяет входное кодирование, а -t или -to-encoding задает кодировку вывода.
Чтобы перечислить все известные кодировки символов, выполните следующую команду:
Преобразование файлов из UTF-8 в кодировку ASCII
Теперь перейдем к тому, как конвертировать из одной системы кодирования в другую. Приведенная ниже команда преобразуется из ISO-8859-1 в кодировку UTF-8.
Рассмотрим файл с именем input.file, который содержит символы:
Начнем с проверки кодировки символов в файле, а затем просмотра содержимого файла. Вкратце, мы можем преобразовать все символы в кодировку ASCII.
После запуска команды iconv мы проверяем содержимое выходного файла и новую кодировку символов, как показано ниже.
Примечание. Если в кодировку добавлена строка //IGNORE, после преобразования отображаются символы, которые не могут быть преобразованы, и ошибка.
Опять же, предположим, что строка //TRANSLIT добавляется в кодировку, как в приведенном выше примере (ASCII//TRANSLIT), преобразуемые символы транслитерируются по мере необходимости. Это подразумевает, что символ не может быть представлен в целевом наборе символов, его можно аппроксимировать одним или несколькими похожими символами.
Следовательно, любой символ, который не может быть транслитерирован и не находится в целевом наборе символов, заменяется знаком вопроса (?) на выходе.
Преобразование нескольких файлов в кодировку UTF-8
Возвращаясь к нашей основной теме, чтобы преобразовать несколько или все файлы каталога в кодировку UTF-8, вы можете написать небольшой скрипт оболочки под названием encoding.sh следующим образом:
Сохраните файл, затем сделайте его исполняемым файлом скрипта. Запустите этот скрипт из каталога, в котором находятся ваши файлы (*.txt).
Важно. Вы также можете использовать этот скрипт для общего преобразования нескольких файлов из одной кодировки в другую, просто поэкспериментируйте со значениями переменной FROM_ENCODING и TO_ENCODING, не забывая имя выходного файла «${file%.txt}.utf8.converted».
Для получения дополнительной информации просмотрите страницу iconv man.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
2 комментария. Оставить новый
пишет что нет файла или директории, всего лишь поменял txt на php.
что не так в строке $CONVERT «$file» -o «${file%.txt}.utf8.converted»
А как результат tail пропускать на перекодировку?