Как преобразовать файл в utf 8

Обновлено: 04.07.2024

Каждый файл имеет кодировку символов, которая сообщает операционной системе компьютера или любой программе, которая ее использует, информацию о файле. Когда мы храним данные в файле, программа, которую вы используете для хранения данных, кодирует всю информацию в определенном формате. Этот формат используется всеми другими программами, которые читают этот файл. Иногда вам может понадобиться преобразовать файлы в формат UTF-8, который общепризнан большинством приложений. В этой статье мы узнаем, как конвертировать файлы в UTF-8 в Linux.

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

Существует множество инструментов, позволяющих преобразовывать файлы из одной кодировки символов в другую. Мы будем использовать iconv для нашей цели.

1. Проверьте его текущую кодировку

Откройте терминал и запустите команду файла, чтобы проверить его текущую кодировку. Допустим, у вас есть файл sample.txt.

2. Преобразование файлов в UTF-8

iconv уже установлен по умолчанию в большинстве систем Linux. Вот команда для преобразования кодировки символов файла с помощью команды iconv.

В приведенной выше команде вам необходимо указать текущую кодировку файла вместо from_encoding и новую кодировку файла вместо to_encoding.

Вот команда для преобразования файла sample.txt из формата ISO-8859 в формат UTF-8.

Далее вы можете проверить новую кодировку символов с помощью команды file.

3. Преобразование нескольких файлов в UTF-8

Если вы хотите преобразовать несколько файлов в папке в формат UTF-8 с помощью iconv, используйте цикл for для запуска iconv отдельно для каждого файла. Мы создадим для него сценарий оболочки.

Добавьте в него следующие строки.

Сохраните и закройте файл.

Сделать его исполняемым

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

Приведенный выше скрипт преобразует все файлы .txt в указанной папке в кодировку UTF-8 и создает отдельную копию каждого файла с расширением .utf8.converted.

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

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

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

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

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

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

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

 Проверить кодировку файлов в Linux

Синтаксис для использования iconv следующий:

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

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

 Список закодированных символов в Linux

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

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

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

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

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

Примечание. В случае добавления строки //IGNORE в to-encoding символы, которые невозможно преобразовать, и после преобразования отображается ошибка.

Опять же, предположим, что строка //TRANSLIT добавлена ​​в to-encoding, как в приведенном выше примере (ASCII//TRANSLIT), преобразуемые символы транслитерируются по мере необходимости и, если это возможно. Это означает, что в случае, если символ не может быть представлен в целевом наборе символов, он может быть аппроксимирован одним или несколькими похожими символами.

Следовательно, любой символ, который не может быть транслитерирован и не входит в целевой набор символов, заменяется в выходных данных вопросительным знаком (?).

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

Возвращаясь к нашей основной теме, чтобы преобразовать несколько или все файлы в каталоге в кодировку UTF-8, вы можете написать небольшой сценарий оболочки с именем encoding.sh следующим образом:

Сохраните файл, затем сделайте скрипт исполняемым. Запустите его из каталога, где находятся ваши файлы ( *.txt ).

Важно: Вы также можете использовать этот скрипт для общего преобразования нескольких файлов из одной заданной кодировки в другую, просто поэкспериментируйте со значениями переменных FROM_ENCODING и TO_ENCODING, не забывая имя выходного файла "$.utf8.converted". " .

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

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

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

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Некоторые файлы, такие как файлы импорта и экспорта Moodle, а также пользовательские языковые пакеты или языковые файлы из сторонних модулей, необходимо преобразовать или обработать как UTF-8, прежде чем их можно будет использовать с Moodle.

Спис трещи

*nix как компьютеры (включая Mac OS X)

Как правило, это можно сделать с помощью команды iconv в Unix, Linux или Mac.

icon -f original_charset -t utf-8 исходный файл > новый файл

см. также пояснение для Windows - там есть сценарий для компьютеров *nix, но он используется в среде cygwin

Компьютеры Windows

Для Windows существует четыре метода преобразования.

Способ 1

Метод 2

Загрузите версию программы iconv для Windows. Скачайте «Полный пакет, кроме исходников» и запустите программу установки. Исполняемый файл находится в папке bin. Запустите из командной строки (Пуск -> Выполнить -> cmd) и следуйте приведенным выше инструкциям.

Способ 3

Преобразование также можно выполнить с помощью Cygwin, похожей на Linux среды для Windows, и выполнения команды iconv в этой среде. Вот пример рабочего решения для Windows с Cygwin:

  • Создайте текстовый файл с именем ToUtf8.txt
  • Заполните его следующим кодом

Две вещи должны быть изменены для вашей местной ситуации:

  1. FROM – исходная кодировка (в которой находятся исходные файлы).
  2. ToUTF — это имя папки, в которой находятся файлы, которые необходимо преобразовать. Эта папка может содержать вложенные папки. Убедитесь, что у вас есть резервная копия!
  • Запустите Cygwin.
  • С именем папки cd cd. ls перейдите в папку на вашем компьютере с Windows, где находятся скрипт ToUtf8.txt и папка ToUTF8.
  • Выполните скрипт, введя sh ToUtf8.txt, и ваши файлы будут преобразованы.

Метод 4

Формат Unicode по умолчанию для Microsoft Excel и Wordpad — UTF-16. Эти файлы можно преобразовать в UTF-8 с помощью GNU Emacs 22.1

  • Откройте файл с помощью Emacs
  • Введите команду C-x RET c utf-8 RET
  • Затем вас спросят, к какой команде вы хотите применить эту кодировку
  • Введите команду C-x C-w, затем введите новое имя файла.
  • Сохраненный файл будет иметь кодировку UTF-8

Сохранение файлов непосредственно в кодировке UTF-8

Большинство современных текстовых редакторов могут обрабатывать кодировку UTF-8, хотя вам, возможно, придется явно указывать им это при загрузке и сохранении файлов. (Заметным исключением, вероятно, является Блокнот в Windows.)

Окна

Вы можете сохранить файл с помощью Блокнота (иногда называемого "Редактор") в кодировке UTF-8, но не в Wordpad.

  1. Открыть Блокнот
  2. Файл – Сохранить как > там вы видите 3 поля, в последнем из которых под названием "кодировка" задайте значение UTF-8.

Mac OS X

Встроенное приложение для редактирования текста имеет параметр "Кодировка простого текста" в окне "Сохранить как". диалог.

Линукс

Стандартный текстовый редактор Gnome по умолчанию использует UTF-8 и имеет параметры набора символов при загрузке и сохранении.

Какой самый быстрый и простой инструмент или метод для преобразования текстовых файлов между наборами символов?

В частности, мне нужно преобразовать UTF-8 в ISO-8859-15 и наоборот.

Возможно все: однострочники на вашем любимом языке сценариев, инструменты командной строки или другие утилиты для ОС, веб-сайтов и т. д.

Лучшие решения на данный момент:

В Linux/UNIX/OS X/cygwin:

Gnu iconv, предложенный Troels Arvin, лучше всего использовать в качестве фильтра. Кажется, он доступен повсеместно. Пример:

Как указал Бен, существует онлайн-конвертер, использующий iconv.

recode (вручную), предложенный Cheekysoft, преобразует один или несколько файлов на месте. Пример:

В этом используются более короткие псевдонимы:

Recode также поддерживает поверхности, которые можно использовать для преобразования между различными типами окончания строки и кодировкой:

Преобразование новых строк из LF (Unix) в CR-LF (DOS):

Файл кодировки Base64:

Вы также можете комбинировать их.

Преобразование файла UTF8 в кодировке Base64 с окончаниями строк Unix в файл Latin 1 в кодировке Base64 с окончаниями строк Dos:

  • PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt

(Однако нет поддержки ISO-8859-15; в нем говорится, что поддерживаемые кодировки: unicode, utf7, utf8, utf32, ascii, bigendianunicode, default и oem.)

Вы имеете в виду поддержку ISO-8859-1? Использование «String» делает это, например. наоборот

Примечание. Возможные значения перечисления: "Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".

  • CsCvt – конвертер набора символов Kalytta – еще один отличный инструмент для преобразования на основе командной строки для Windows.

Просто наткнулся на это в поисках ответа на похожий вопрос – отличное резюме! Просто подумал, что стоит добавить, что recode также будет действовать как фильтр, если вы не передадите ему никаких имен файлов, например: recode utf8..l9 out.txt

Если вы используете enca , вам не нужно указывать входную кодировку. Часто достаточно просто указать язык: enca -L ru -x utf8 FILE.TXT.

На самом деле, iconv работал намного лучше как встроенный преобразователь, а не как фильтр. Преобразование файла с более чем 2 миллионами строк с помощью iconv -f UTF-32 -t UTF-8 input.csv > output.csv сэкономило всего около семисот тысяч строк, только треть. С помощью встроенной версии iconv -f UTF-32 -t UTF-8 file.csv успешно преобразованы все более 2 миллионов строк.

21 Ответ 21

Ни один из этих аргументов указывать не нужно. По умолчанию они будут соответствовать вашей текущей локали, обычно UTF-8.

Для всех, кого смущает отсутствие версий без тире, похоже, что версии iconv для OSX (и, возможно, все BSD) не поддерживают псевдонимы без тире для различных кодировок UTF-*. иконка -l | grep UTF сообщит вам обо всех кодировках, связанных с UTF, которые поддерживает ваша копия iconv.

Не знаете кодировку входного файла? Используйте charde in.txt, чтобы сгенерировать наилучшее предположение. Результат можно использовать как КОДИРОВАНИЕ в iconv -f КОДИРОВАНИЕ .

Предотвратить выход при недопустимых символах (избегая недопустимой последовательности ввода в сообщениях о позиции) и заменить «странные» символы «похожими» символами: iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT in. txt > out.txt .

Мне это нравится, потому что это стандарт для большинства платформ NIX. Но также см. параметр команды VIM (псевдоним: ex ) ниже. Дополнительная информация: (1) вам (вероятно) не нужно указывать параметр -f (from) с iconv . (2) команда file --mime-encoding может помочь вам определить кодировку в первую очередь.

FWIW команда файла сообщила, что мой источник имеет вид UTF-16 Little Endian; работает iconv -f UTF-16 -t UTF-8. неправильно преобразовал его в ASCII, мне пришлось явно указать iconv -f UTF-16LE. для вывода UTF-8

Если у вас есть vim, вы можете использовать это:

Не тестировалось для каждой кодировки.

Самое интересное в этом то, что вам не нужно знать исходную кодировку

Имейте в виду, что эта команда изменяет непосредственно файл

Пояснение!

  1. + : используется vim для прямого ввода команды при открытии файла. Обычно используется для открытия файла в определенной строке: vim +14 file.txt
  2. | : разделитель нескольких команд (например, ; в bash)
  3. установить nobomb : нет спецификации utf-8
  4. set fenc=utf8 : установить новую кодировку для ссылки на документ utf-8
  5. x : сохранить и закрыть файл
  6. filename.txt: путь к файлу
  7. " : кавычки здесь из-за каналов. (иначе bash будет использовать их как каналы bash)

Довольно круто, но несколько медленно. Есть ли способ изменить это, чтобы конвертировать сразу несколько файлов (таким образом экономя затраты на инициализацию vim)?

Спасибо за объяснение!У меня были трудности с началом файла, пока я не прочитал о настройке бомба/нобомба.

например: find -regextype posix-extended -type f -regex ".*\.(h|cpp|rc|fx|cs|props|xaml)" -exec vim +'set nobomb | установить fenc=utf8 | х' <> \;

Я использовал это для преобразования кодировки CSV-файлов и был очень взволнован, когда увидел, что кодировка действительно изменилась. К сожалению, когда я начал загружать файл в MySQL, в нем было другое количество столбцов, чем то, которое было до запуска команды vim. Интересно, можно ли просто открыть файл, преобразовать кодировку и сохранить/закрыть файл, оставив все остальное содержимое файла без изменений?

В Linux вы можете использовать очень мощную команду recode, чтобы попытаться выполнить преобразование между различными кодировками, а также любые проблемы с окончанием строки. recode -l покажет вам все форматы и кодировки, между которыми может конвертировать инструмент. Вероятно, это будет ОЧЕНЬ длинный список.

Самая короткая версия, если вы можете предположить, что входная спецификация верна:

<р>. ой. Думаю, это почти одно и то же. У меня возникли проблемы с запуском вашего примера, потому что я предполагал, что обе версии используют один и тот же файл file-utf8.txt для ввода, поскольку они обе имеют один и тот же выходной файл, что и file-utf7.txt .

Это было бы действительно здорово, если бы не поддержка UTF16. Он поддерживает UTF32, но не UTF16! Мне не нужно было бы конвертировать файлы, за исключением того, что многие программы Microsoft (например, SQL server bcp) настаивают на UTF16, и тогда их утилита не будет конвертировать в нее. Мягко говоря, интересно.

Также существуют инструменты на основе iconv на многих языках.

Я поместил это в .bashrc :

..чтобы иметь возможность конвертировать файлы следующим образом:

лучше использовать tmp=$(mktmp) для создания временного файла. Кроме того, строка с rm избыточна.

В Windows я смог использовать Notepad++ для преобразования ISO-8859-1 в UTF-8. Нажмите "Кодировка", а затем "Преобразовать в UTF-8".

Кодировка символов всех соответствующих текстовых файлов определяется автоматически, и все соответствующие текстовые файлы преобразуются в кодировку utf-8:

Для выполнения этих шагов используется подоболочка sh с параметром -exec , запуск однострочного кода с флагом -c и передача имени файла в качестве позиционного аргумента "$1" с параметром -- <> . В промежутке выходной файл utf-8 временно называется convert .

-b , --brief Не добавлять имена файлов перед строками вывода (краткий режим).

-i , --mime Заставляет команду файла выводить строки MIME-типа, а не более традиционные, удобочитаемые для человека. Таким образом, он может сказать, например, text/plain; charset=us-ascii, а не текст ASCII. Команда sed обрезает это только до us-ascii, как того требует iconv .

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

Кодирование ваших файлов Excel в формат UTF (UTF-8 или UTF-16) может помочь обеспечить правильное чтение и отображение всего, что вы загружаете в Alchemer. Это особенно важно при работе с иностранными или специальными символами в кампаниях электронной почты, действиях с логином/паролем, списках контактов, импорте данных и тексте и переводах. Все эти функции позволяют получать загружаемые файлы CSV.

Существует несколько различных способов получить правильную кодировку UTF, поэтому мы рассмотрим, как это сделать в более старых версиях Microsoft Excel, OpenOffice, LibreOffice, Google Drive и даже как использовать для этого приложение Terminal!< /p>

Как кодировать файлы Excel

Ниже приведены ссылки на видеоролики и пошаговые инструкции по кодированию файлов Excel в кодировку UTF-8 и UTF-16. В Excel 2011 и более поздних версиях нет возможности кодировать файлы UTF.

В зависимости от вашей версии Excel вы можете закодировать файл в UTF-8 во время процесса Сохранить как. Это будет зависеть от вашей версии Excel, а также от того, используете ли вы Mac или ПК.

Версии Excel с 1999 по 2010

Excel для Mac

Хотя в старых версиях Excel для Mac нет возможности кодировать UTF-8 для CSV, в последней версии Excel это делается достаточно просто.

Краткое пошаговое видео: видео Open Office UTF-8

LibreOffice

Google Диск

Одним из широко доступных веб-решений для кодирования файлов XLS в формат UTF-8 CSV является Google Диск, также известный как Google Документы. Вы можете загрузить существующий файл и легко экспортировать его, выполнив следующие действия.

Использование терминала

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

Для начала сохраните CSV-файл на рабочем столе с кратким именем файла.

Этапы Apple OSX

  1. Нажмите command+пробел, чтобы перейти к Spotlight, найдите «Терминал» и нажмите «Терминал», чтобы открыть его.
  2. По запросу введите приведенное ниже и нажмите Enter:
  3. Вставьте следующее:
  4. Измените имена файлов, чтобы они совпадали с именами на рабочем столе, и нажмите Enter.
  5. Вуаля! Ваш файл имеет кодировку UTF-8. Не открывайте файл после конвертации!

Этапы Windows

  1. Перейдите в меню "Пуск", введите "cmd" и нажмите cmd, чтобы открыть.
  2. По запросу введите следующее (заменив username своим именем пользователя Windows) и нажмите Enter:
  3. Вставьте следующее:
  4. Измените имена файлов, чтобы они совпадали с именами на рабочем столе, и нажмите Enter.
  5. Теперь ваш файл имеет кодировку UTF-8. Не открывайте файл после конвертации, загрузите его в нашу систему.

Фильтр: Базовый Стандарт Исследование рынка HR Professional Полный доступ Отчетность
Бесплатная отдельная команда и предприятие

Читайте также: