Как изменить кодировку текстового файла в Linux
Вопрос: У меня есть файл субтитров в кодировке «iso-8859-1», который показывает неверные символы в моей системе Linux, и я хотел бы изменить его кодировку текста на набор символов «utf-8». Что в Linux является хорошим инструментом для преобразования кодировки символов в текстовый файл?
Как вы уже знаете, компьютеры могут обрабатывать только двоичные числа на самом низком уровне, а не символы. При сохранении текстового файла каждый символ в этом файле сопоставляется с битами, и именно эти «биты» фактически хранятся на диске. Когда приложение позже открывает этот текстовый файл, каждое из этих двоичных чисел считывается и сопоставляется с исходными символами, понятными нам, людям. Этот процесс «сохранить и открыть» лучше всего выполнять, когда все приложения, которым требуется доступ к текстовому файлу, «понимают» его кодировку, то есть то, как двоичные числа сопоставляются с символами, и, таким образом, могут обеспечить «обратный путь» понятных данных.
Если разные приложения не используют одну и ту же кодировку при работе с текстовым файлом, нечитаемые символы будут отображаться везде, где в исходном файле встречаются специальные символы. Под специальными символами мы подразумеваем те, которые не являются частью английского алфавита, например, символы с диакритическими знаками (например, ñ, á, ü).
Тогда возникают вопросы: 1) как я могу узнать, какую кодировку символов использует определенный текстовый файл? и 2) как я могу преобразовать его в какую-либо другую кодировку по своему выбору?
Шаг первый: определение кодировки символов в файле
Чтобы узнать кодировку символов файла, мы будем использовать инструмент командной строки под названием file . Поскольку команда file является стандартной программой UNIX, мы можем ожидать, что найдем ее во всех современных дистрибутивах Linux.
Выполните следующую команду:
$ file --mime-encoding filename

Шаг второй: узнайте, какие кодировки текста поддерживаются
Следующим шагом будет проверка того, какие кодировки текста поддерживаются в вашей системе Linux. Для этого мы будем использовать инструмент под названием iconv с флагом -l (нижняя буква L), в котором будут перечислены все поддерживаемые в настоящее время кодировки.
$ iconv -l
Утилита icon является частью библиотек GNU libc , поэтому она доступна во всех дистрибутивах Linux.
Шаг третий: преобразование кодировки текста
После того, как мы выбрали целевую кодировку среди тех, которые поддерживаются в нашей системе Linux, давайте запустим следующую команду для выполнения преобразования:
$ iconv -f old_encoding -t new_encoding filename
Например, чтобы преобразовать iso-8859-1 в utf-8 :
$ iconv -f iso-8859-1 -t utf-8 input.txt

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

Все права защищены. © Linux-Console.net • 2019-2024
Узнать кодировку файла
Определять можно по частоте появления тех или иных букв. Частота появления букв во всех текстовых жанрах практически одинаковая (проверял лично).
Godzillich
( 18.06.08 11:15:06 MSD )
Ответ на: комментарий от Godzillich 18.06.08 11:15:06 MSD

animechaos ★
( 18.06.08 11:30:12 MSD )
Ответ на: комментарий от animechaos 18.06.08 11:30:12 MSD
Вобщем просто берешь несколько текстов, переводишь в разные кодировки, подсчитываешь частоту появления симоволов для каждой кодировки. И потом просто сравниваешь, на что больше похоже. 🙂
Если мозг взорваля, вот тут можно подсмотреть как кодировку определяет Mozilla/Firefox: http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
Godzillich
( 18.06.08 11:45:57 MSD )
Ответ на: комментарий от Godzillich 18.06.08 11:45:57 MSD
Блин, сказали же уже: enca определяет кодировку, а enconv конвертирует в текущую локаль.
Eddy_Em ☆☆☆☆☆
( 18.06.08 11:48:53 MSD )

открываешь текстовым редактором. и подбираешь ту кодировку, в котором все нормально отображается.
Моя страничка, Валентина Шакмакова
Меня зовут Валентина Шакмакова, провожу жизнь в не указано. Я много времени посвятил изучению множества областей науки- психика, я, дружба, Linux, программирование, культура, Отношения, знаменитости, железо, шутки. Хотите задать мне вопрос? — жду Ваших писем valentinatn94t@yandex.ru.
Что нового
Популярные вопросы
Caribik Как избавить маму от страха?
Ты спрашивал, как избавить маму от страха. Пока я писал ответ — его удалили. если хочешь — можно р.
В чём следует проявлять воздержанность?
В чём следует проявлять воздержанность.
Подскажите совместима ли видеокарта с материнской платой?
Подскажите совместима ли видеокарта с типом памати DDR5 c материнской платой у которой оперативка DD.
Где в виндовс виста хранятся шрифты? (нужен именно путь а не «в панели управления»)
Где в виндовс виста хранятся шрифты? (нужен именно путь а не «в панели управления».
Последние вопросы
Кого то когда то, преподаватели/учителя застукивали за рапитем алкоголя?
Вчера в лесу, когда были с классом меня с другом растукали за распитием пива.
как извиняться пе.
Что делать если блядская натура даёт о себе знать?)
Что делать если блядская натура даёт о себе знать.
В чём следует проявлять воздержанность?
В чём следует проявлять воздержанность.
Как жить и чем руководствоваться, если старые убеждения отошли в небытие, а новых еще нет?
Даже самый умный человек теряется, когда влюбляется. Любовь — эдакая проказница, великая мастерица д.
$ enca xml.php
enca: Cannot determine (or understand) your language preferences.
Please use `-L language’, or `-L none’ if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca —list languages’ to get a list of supported languages.
enconv .htaccess -L russian
enconv: Cannot detect native charset for locale ru.
You have to use the `-x’ option or the DEFAULT_CHARSET environment variable to set the target encoding manually.
А если как в примере из мана работает?
Suppose, you downloaded some Russian HTML file, ‘file.htm’, it claims it’s windows-1251 but it isn’t. So you run
enca -L ru file.htm
and find out it’s KOI8-R (for example).
Как мне узнать кодировку имени файла? [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 5 лет назад .
Как мне узнать кодировку имени файла? Подскажите программы под Windows и Linux. Также временами надо делать групповое переименование кодировки в именах и внутренностях файлов. Тоже нужна надёжная программа под Windows и Linux.
Отслеживать
Victor Kurenkov
задан 21 окт 2018 в 4:40
Victor Kurenkov Victor Kurenkov
39 1 1 серебряный знак 4 4 бронзовых знака
Что Вы имеете ввиду говоря «групповое переименование кодировки»?
21 окт 2018 в 11:00
вопрос слишком общий. оставьте упоминание одной операционной системы (нажав править), а для другой создайте новый вопрос. и, естественно, второй вопрос («также временами надо делать…») должен быть задан отдельно (для каждой интересующей операционной системы).
21 окт 2018 в 11:06
Под linux есть file .
21 окт 2018 в 17:20
В Windows кодировка имён файлов всегда одна — это UTF-16. В Unix-подобных системах (в том числе Linux и macOS) в подавляющем большинстве случаев используется UTF-8. Про использование других кодировок в современных ОС и ФС мне ничего не известно
22 окт 2018 в 9:12
Подозреваю, вы хотели задать вопрос о чём-то другом, но использовали неподходящий для вашего случая термин «кодировка имени файла»
22 окт 2018 в 9:13
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Про Linux не скажу, а для Windows с кодировкой все просто: все имена файловых объектов в NTFS хранятся в UTF-16.
Если же вам надо определять к какому национальному алфавиту принадлежит конкретное имя, то это надо анализировать коды символов (например, символы кириллицы имеют коды UTF-16 вида 04xx ). Смысла в этом не очень много, потому что в имени могут смешиваться символы любых алфавитов. Готовую программу для такого анализа найти будет сложно. А если писать самому, то тут в помощь только непосредственно материалы Unicode Consortium, в частности библиотека ICU.
Отслеживать
ответ дан 22 окт 2018 в 7:55
4,894 8 8 золотых знаков 15 15 серебряных знаков 29 29 бронзовых знаков
- windows
- файлы
- файловая-система
-
Важное на Мете
Похожие
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951