как узнать кодировку файла linux

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

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

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

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

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

Программы для определения кодировки в Linux

Чтобы узнать кодировку файла используется команда file с флагами -i или —mime, которые включают вывод строки с типом MIME. Пример:

как узнать кодировку файла linux. . как узнать кодировку файла linux фото. как узнать кодировку файла linux-. картинка как узнать кодировку файла linux. картинка .

Команда file показывает кодировки, но для одного из моих файлов она неверна. Рассмотрим ещё одну альтернативу.

Программа enca для определения кодировки файла

Утилита enca определяет кодировку текстовых файлов и, если нужно, конвертирует их.

Установим программу enca:

как узнать кодировку файла linux. . как узнать кодировку файла linux фото. как узнать кодировку файла linux-. картинка как узнать кодировку файла linux. картинка .

В этот раз для обоих файлов кодировка определена верно.

Запуск команды без опции выводит что-то вроде:

Это удобно для чтения людьми. Для использования вывода программы в скриптах есть опция -e, она выводит только универсальное имя, используемое в enca:

Если вам нужно имя, которое используется для названия кодировок в iconv, то для этого воспользуйтесь опцией -i:

Для вывода предпочитаемого MIME имени кодировки используется опция -m:

как узнать кодировку файла linux. x24.jpg.pagespeed.ic.2v44582Ga. как узнать кодировку файла linux фото. как узнать кодировку файла linux-x24.jpg.pagespeed.ic.2v44582Ga. картинка как узнать кодировку файла linux. картинка x24.jpg.pagespeed.ic.2v44582Ga.

Для правильного определения кодировки программе enca нужно знать язык файла. Она получает эти данные от локали. Получается, если локаль вашей системы отличается от языка документа, то программа не сможет определить кодировку.

Язык документа можно явно указать опцией -L:

Чтобы узнать список доступных языков наберите:

Как определить кодировку строки

Для определения, в какой кодировке строка, используйте одну из следующих конструкций:

Вместо СТРОКА_ДЛЯ_ПРОВЕРКИ впишите строку, для которой нужно узнать кодировку. Если у вас строка не на русском языке, то откорректируйте значение опции -L.

как узнать кодировку файла linux. 01. как узнать кодировку файла linux фото. как узнать кодировку файла linux-01. картинка как узнать кодировку файла linux. картинка 01.

Если возникло сообщение об ошибке:

то попробуйте установить chardet из стандартных репозиториев.

Если chardet не найдена в репозиториях, то поищите программу uchardet, затем установите и используйте её.

Изменение кодировки в Linux

Использование команды iconv

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

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

Где -f или —from-code означает кодировку исходного файла -t или —to-encoding указывают кодировку нового файла. Флаг -o является необязательным, если его нет, то содержимое документа в новой кодировке будет показано в стандартном выводе.

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

как узнать кодировку файла linux. 22. как узнать кодировку файла linux фото. как узнать кодировку файла linux-22. картинка как узнать кодировку файла linux. картинка 22.

Конвертирование файлов из windows-1251 в UTF-8 кодировку

Далее мы научимся, как конвертировать файлы из одной схемы кодирования (кодировки) в другую. В качестве примера наша команда будет конвертировать из windows-1251 (которая также называется CP1251) в UTF-8 кодировку.

Допустим, у нас есть файл mypoem_draft.txt его содержимое выводится как

Мы начнём с проверки кодировки символов в файле, просмотрим содержимое файла, выполним конвертирование и просмотрим содержимое файла ещё раз.

как узнать кодировку файла linux. 25. как узнать кодировку файла linux фото. как узнать кодировку файла linux-25. картинка как узнать кодировку файла linux. картинка 25.

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

Если к конечной кодировке добавляется строка //TRANSLIT, конвертируемые символы при необходимости и возможности будут транслитерированы. Это означает, когда символ не может быть представлен в целевом наборе символов, он может быть заменён одним или несколькими выглядящими похоже символами. Символы, которые вне целевого набора символов и не могут быть транслитерированы, в выводе заменяются знаком вопроса (?).

Изменение кодировки программой enca

Программа enca не только умеет определять кодировку, но и может конвертировать текстовые файлы в другую кодировку. Особенностью программы является то, что она не создаёт новый файл, а изменяет кодировку в исходном. Желаемую кодировку нужно указать после ключа -x:

Конвертация строки в правильную кодировку

Команда iconv может конвертировать строки в нужную кодировку. Для этого строка передаётся по стандартному вводу. Достаточно использовать только опцию -f для указания кодировки, в которую должна быть преобразована строка. Т.е. используется команда следующего вида:

как узнать кодировку файла linux. 02. как узнать кодировку файла linux фото. как узнать кодировку файла linux-02. картинка как узнать кодировку файла linux. картинка 02.

Также для изменения кодировки применяются программы:

Источник

Как узнать языковую кодировку имени файла в Linux?

У меня есть каталог с

10000 файлов изображений из внешнего источника.

Многие из имен файлов содержат пробелы и знаки препинания, которые не подходят для БД или для Интернета. Я также хочу добавить номер SKU в конце каждого имени файла (для целей бухгалтерского учета). Многие, если не большинство имен файлов также содержат расширенные латинские символы, которые я хочу сохранить для целей SEO (в частности, чтобы имена файлов точно представляли содержимое файла в Google Images)

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

Там нет 100% точного способа на самом деле, но есть способ дать хорошее предположение.

Существует кодекс библиотеки Python, который доступен здесь: https://pypi.python.org/pypi/chardet

Посмотрите, что для текущей переменной LANG установлено:

Создайте имя файла, которое должно быть закодировано с помощью UTF-8

Измените нашу кодировку и посмотрите, что произойдет, когда мы попытаемся перечислить ее

Итак, запустите python, импортируйте chardet и заставьте его прочитать имя файла. Я использую некоторые оболочки (например, расширение через символ *), чтобы получить мой файл. Измените «ls m *» на любой, который будет соответствовать одному из ваших файлов примеров.

Как видите, это только предположение. Насколько хорошо предположение показывает переменная «достоверность».

Источник

linux узнать кодировку файла

Давно в категории «Ubuntu» у меня не было материалов. Сегодня я исправлюсь и выпущу сразу две статьи. Итак, начнём. вам приходилось менять кодировку текстовых файлов в linux’e? А что если объем такого файла больше 10 Gb?!

Что бы изменить кодировку файла нужно использовать замечательную утилиту iconv. В параметрах необходимо указывать исходную кодировку, а в этом нам поможет команда:

Ну а далее вот такие действия:

Остальные ключики как обычно в man iconv.

iconv и большие файлы

Для быстрого выполнения процесса кодировки, iconv загружает файл в оперативную память и в swap. Но это работает только для небольших файлов. Если файл уж совсем большой, а ОЗУ не особо, то вы прост получите ошибку, мол «слишком большой файл», звиняйте хлопцы. Где взять такой файл? К примеру это может быть выборка из БД ( игры для ipad, PC, PSP или другие данные)

Вот здесь предлагают различные решения данного вопроса: и скриптами, и разбивка на части, вывод в потоки, а потом обратно сборка в файл. Лично мне понравилось весьма простое решение: команда split — она позволяет разбить текстовый файл на более мелкие, а дальше с ними работать как угодно можно.

В простом варианте чтобы разбить файл на куски объёмом по 1Gb выполнить:

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

Как узнать кодировку файла в Ubuntu Linux: 5 комментариев

�� Тоже недавно наткнулся на этот совет.. Обязательно поможет кому нибудь…

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

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

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

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

Программы для определения кодировки в Linux

Чтобы узнать кодировку файла используется команда file с флагами -i или —mime, которые включают вывод строки с типом MIME. Пример:

как узнать кодировку файла linux. 21. как узнать кодировку файла linux фото. как узнать кодировку файла linux-21. картинка как узнать кодировку файла linux. картинка 21.

Команда file показывает кодировки, но для одного из моих файлов она неверна. Рассмотрим ещё одну альтернативу.

Программа enca для определения кодировки файла

Утилита enca определяет кодировку текстовых файлов и, если нужно, конвертирует их.

Установим программу enca:

как узнать кодировку файла linux. 23. как узнать кодировку файла linux фото. как узнать кодировку файла linux-23. картинка как узнать кодировку файла linux. картинка 23.

В этот раз для обоих файлов кодировка определена верно.

Запуск команды без опции выводит что-то вроде:

Это удобно для чтения людьми. Для использования вывода программы в скриптах есть опция -e, она выводит только универсальное имя, используемое в enca:

Если вам нужно имя, которое используется для названия кодировок в iconv, то для этого воспользуйтесь опцией -i:

Для вывода предпочитаемого MIME имени кодировки используется опция -m:

как узнать кодировку файла linux. 24. как узнать кодировку файла linux фото. как узнать кодировку файла linux-24. картинка как узнать кодировку файла linux. картинка 24.

Для правильного определения кодировки программе enca нужно знать язык файла. Она получает эти данные от локали. Получается, если локаль вашей системы отличается от языка документа, то программа не сможет определить кодировку.

Язык документа можно явно указать опцией -L:

Чтобы узнать список доступных языков наберите:

Как определить кодировку строки

Для определения, в какой кодировке строка, используйте одну из следующих конструкций:

Вместо СТРОКА_ДЛЯ_ПРОВЕРКИ впишите строку, для которой нужно узнать кодировку. Если у вас строка не на русском языке, то откорректируйте значение опции -L.

как узнать кодировку файла linux. 01. как узнать кодировку файла linux фото. как узнать кодировку файла linux-01. картинка как узнать кодировку файла linux. картинка 01.

Если возникло сообщение об ошибке:

то попробуйте установить chardet из стандартных репозиториев.

Если chardet не найдена в репозиториях, то поищите программу uchardet, затем установите и используйте её.

Изменение кодировки в Linux

Использование команды iconv

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

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

Где -f или —from-code означает кодировку исходного файла -t или —to-encoding указывают кодировку нового файла. Флаг -o является необязательным, если его нет, то содержимое документа в новой кодировке будет показано в стандартном выводе.

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

как узнать кодировку файла linux. 22. как узнать кодировку файла linux фото. как узнать кодировку файла linux-22. картинка как узнать кодировку файла linux. картинка 22.

Конвертирование файлов из windows-1251 в UTF-8 кодировку

Далее мы научимся, как конвертировать файлы из одной схемы кодирования (кодировки) в другую. В качестве примера наша команда будет конвертировать из windows-1251 (которая также называется CP1251) в UTF-8 кодировку.

Допустим, у нас есть файл mypoem_draft.txt его содержимое выводится как

Мы начнём с проверки кодировки символов в файле, просмотрим содержимое файла, выполним конвертирование и просмотрим содержимое файла ещё раз.

как узнать кодировку файла linux. 25. как узнать кодировку файла linux фото. как узнать кодировку файла linux-25. картинка как узнать кодировку файла linux. картинка 25.

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

Если к конечной кодировке добавляется строка //TRANSLIT, конвертируемые символы при необходимости и возможности будут транслитерированы. Это означает, когда символ не может быть представлен в целевом наборе символов, он может быть заменён одним или несколькими выглядящими похоже символами. Символы, которые вне целевого набора символов и не могут быть транслитерированы, в выводе заменяются знаком вопроса (?).

Изменение кодировки программой enca

Программа enca не только умеет определять кодировку, но и может конвертировать текстовые файлы в другую кодировку. Особенностью программы является то, что она не создаёт новый файл, а изменяет кодировку в исходном. Желаемую кодировку нужно указать после ключа -x:

Конвертация строки в правильную кодировку

Команда iconv может конвертировать строки в нужную кодировку. Для этого строка передаётся по стандартному вводу. Достаточно использовать только опцию -f для указания кодировки, в которую должна быть преобразована строка. Т.е. используется команда следующего вида:

как узнать кодировку файла linux. 02. как узнать кодировку файла linux фото. как узнать кодировку файла linux-02. картинка как узнать кодировку файла linux. картинка 02.

Также для изменения кодировки применяются программы:

Источник

Как найти кодировку файла через скрипт в Linux?

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

Команда file не может сделать это.

Интересующая меня кодировка: ISO-8859-1. Если кодировка является чем-то еще, я хочу переместить файл в другой каталог.

Если вы хотите сделать это для нескольких файлов

Это действительно трудно определить, является ли это iso-8859-1. Если у вас есть текст только с 7-битными символами, который также может быть iso-8859-1, но вы не знаете. Если у вас есть 8-битные символы, то символы верхнего региона существуют и в кодировках заказа. Поэтому вам придется использовать словарь, чтобы лучше угадать, какое это слово, и определить, от какой буквы это должно быть. Наконец, если вы обнаружите, что это может быть utf-8, чем вы уверены, что это не iso-8859-1

В Debian вы также можете использовать encguess :

Чтобы преобразовать кодировку из 8859 в ASCII:

С Python вы можете использовать модуль chardet: https://github.com/chardet/chardet

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

Так, например, найдите эквивалент английского «и», «но», «к», «of» и т. Д. На всех поддерживаемых языках 8859-1 и посмотрите, есть ли у них большое количество вхождений в пределах файл.

Я не говорю о буквальном переводе, таком как:

Я знаю, что вы заинтересованы в более общем ответе, но то, что хорошо в ASCII, обычно хорошо в других кодировках. Вот строка Python, чтобы определить, является ли стандартный ввод ASCII. (Я почти уверен, что это работает в Python 2, но я тестировал его только на Python 3.)

Источник

Как узнать кодировка файла в Unix через скрипт(ы)

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

на не в состоянии сделать это.

кодировка, представляющая для меня интерес: ISO-8859-1. Если кодировка-это что-то еще, я хочу переместить файл в другой каталог.

14 ответов

Если вы хотите сделать это для кучи файлов

различные дистрибутивы Linux (Debian / Ubuntu, OpenSuse-packman. ) предоставляем файлы.

вот пример скрипта с использованием file-I и iconv, который работает на MacOsX Для вашего вопроса вам нужно использовать mv вместо iconv

действительно трудно определить, является ли это iso-8859-1. Если у вас есть текст только с 7-битными символами, который также может быть iso-8859-1, но вы не знаете. Если у вас есть 8-битные символы, то символы верхнего региона также существуют в кодировках порядка. Поэтому вам придется использовать словарь, чтобы лучше угадать, какое слово это и определить оттуда, какая буква должна быть. Наконец, если вы обнаружите, что это может быть utf-8, чем вы уверены, что это не iso-8859-1

кодировка это одна из самых сложных вещей, потому что вы никогда не знаете, если ничего не говорит вам

Если вы говорите о XML-файлах (ISO-8859-1), XML-декларация внутри них указывает кодировку:
Таким образом, вы можете использовать регулярные выражения (например, perl ), чтобы проверить каждый файл по такой спецификации.
Более подробную информацию можно найти здесь: как определить кодировку текстового файла.

с Python вы можете использовать модуль chardet:https://github.com/chardet/chardet

еще одна возможность-искать определенные слова в файле на всех поддерживаемых языках и посмотреть, сможете ли вы их найти.

Так, например, найдите эквивалент английского «and», «but», «to», » of » и так далее на всех поддерживаемых языках 8859-1 и посмотрите, есть ли у них большое количество вхождений в файле.

Я не говорю о дословном переводе, например:

Я знаю, что вас интересует более общий ответ, но то, что хорошо в ASCII, обычно хорошо в других кодировках. Вот однострочный Python, чтобы определить, является ли стандартный ввод ASCII. (Я уверен, что это работает в Python 2, но я тестировал его только на Python 3.)

В Cygwin, похоже, это работает для меня:

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

в Debian вы также можете использовать: encguess :

вы можете извлечь кодировку одного файла с помощью команды file. У меня есть образец.HTML-файл с:

text / html; charset=utf-8

Я использую следующий скрипт

Источник

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

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