Изменить кодировку файла на utf 8

Обновлено: 21.11.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. Вы можете использовать описанные выше шаги для преобразования одного или нескольких файлов.

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

В частности, мне нужно преобразовать 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 Полный доступ Отчетность
Бесплатная отдельная команда и предприятие

Некоторые файлы, такие как файлы импорта и экспорта 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 и имеет параметры набора символов при загрузке и сохранении.

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