Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


Как проверить кодировку в текстовом файле? / Общая / SocialKit

Программный комплекс SocialKit корректно работает с кириллицей в текстовых файлах, кодировка которых соответствует стандарту Windows-1251 (кратко может быть записано как CP1251 или ANSI). В этой связи в задачах, поддерживающих указание внешнего файла с перечнем комментариев, сообщений, описаний и прочей информации, которая может содержать кириллицу, нужно указывать текстовые файлы, где русский текст задан в кодировке по стандарту Windows-1251 или же просто ANSI, или CP1251 - всё это, по сути, одно и то же.

Учитывая, что многие инструменты по работе с текстом не отображают, в какой именно кодировке задан текст в текстовом файле и/или не поддерживают преобразование кодировок, то у новичков часто возникает вопрос о том, как именно привести кодировку текстового файла с русским текстом к понятному для SocialKit формату CP1251.

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

Если вы не уверены в том, в какой именно кодировке задан текст, то проще всего этот текст пересохранить через стандартный Блокнот Windows. При пересохранении Блокнот также покажет, в каком формате текст сейчас.

Опишем эту простую процедуру по шагам.

1. Открыть искомый текстовый файл в Блокноте Windows и выбрать пункт меню "Файл" -> "Сохранить как...".

Пример текстового файла, в котором русский текст задан в формате UTF, но это не очевидно при открытии.

2. В открывшемся диалоговом окне вы сразу видите, в какой кодировке был сохранён текст в текстовом файле.

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

Как видно, в примере текст в текстовом файле был ранее сохранён в кодировке UTF-8. Для изменения кодировке достаточно выбрать в выпадающем списке кодировку ANSI и нажать кнопку "Сохранить".

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

Работа с текстом. Как определить кодировку файла

Давайте узнаем, что такое кодировка файла. Говоря проще, кодировкой считается набор байтовых символов, который соответствует буквенному алфавиту в определенном языке. Для каждого языка существует своя определенная последовательность таких знаков кодирования. Иногда возникает потребность определить кодировку. Рассмотрим это на примере текстового документа.

Что нужно

Набор определенных программных средств. Для начала достаточно приложений типа Word, KWrite, браузера Firefox и средства распознавания – enca.

Определить кодировку файла можно при помощи универсального редактора Microsoft Word. Прежде, его нужно проинсталлировать из пакета Office. Когда приложение будет установлено, и сможет открываться с помощью иконки в виде символа W на рабочем столе, переходим к следующему шагу.

Следующий этап распознавания

Через навигационную панель приложения по очереди откройте пункты «Файл» - «открыть». То же самое можно сделать, задействовав комбинацию клавиатуры Ctrl+O.

Затем в диалоговом окне выберите нужный каталог и, собственно, файл для чтения. Выделив его мышью, нажмите кнопку «открытие».

Когда у файла набор соответствий не CP1251, приложение пытается самостоятельно определить кодировку. Будет выведен список возможных соответствий. В предложенных наборах символов в правой части списка выберите одну из кодировок. Если выбор сделан правильно, в элементе «образец» отобразится распознанный текст.

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

Кроме препроцессора для обработки текста, Word, существуют и другие функциональные утилиты. Одна из них - KWrite (аналог для unix-систем). Чтобы вы не путались, распишу по пунктам задачу «определить кодировку документа в KWrite».

  1. Загрузка в приложение файла с расширением .txt.
  2. Перебор кодировок до тех пор, пока одна из них не окажется подходящей.
  3. Чтобы выполнить пункт 2, перейдите к опции tools в меню encoding.

Браузер Mozilla Firefox, цель та же – определить кодировку

Принцип примерно тот же, что и в утилитах для работы с текстом. Запускаем проинсталлированный браузер на выполнение, а если он не установлен – скачиваем инсталлятор с mozilla.org.

Затем в открытом окне программы нужно открыть текстовый документ через меню «Файл», подменю «Открыть файл». Если выбранный файл отобразится без искажений, и текст читаемый, определить кодировку не составит труда.

Для этого перейдите на «Вид» - «кодировка », там отображено несколько наборов символов, а тот из них, напротив которого стоит «галочка», и есть определенная браузером кодировка.

Если же текст не распознался правильно, выберите подраздел «дополнительно», поэкспериментируйте в нем с кодировками или выберите значение «авто».

Специализированное ПО – работаем с enca

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

Для тех, кто привык работать под unix, подойдет утилита enca. Ее можно установить при помощи сервиса «Диспетчер пакетов». Найдя доступную категорию пакетов, можно приступить к установке программного обеспечения.

Чтобы вывести листинг языков распознавания, выполните команду enca --list languages, используя терминал.

Если нужно определить кодировку текстового файла после ключа (g), введите его название, а после опции (L) примерно таким же образом введите язык распознавания:

enca -L russian -g /home/vic/temp/myfile.txt.

Подытожим сказанное о кодировке

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

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

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

Как проверить кодировку в текстовом файле? / Общая / SocialKit

Программный комплекс SocialKit корректно работает с кириллицей в текстовых файлах, кодировка которых соответствует стандарту Windows-1251 (кратко может быть записано как CP1251 или ANSI). В этой связи в задачах, поддерживающих указание внешнего файла с перечнем комментариев, сообщений, описаний и прочей информации, которая может содержать кириллицу, нужно указывать текстовые файлы, где русский текст задан в кодировке по стандарту Windows-1251 или же просто ANSI, или CP1251 - всё это, по сути, одно и то же.

Учитывая, что многие инструменты по работе с текстом не отображают, в какой именно кодировке задан текст в текстовом файле и/или не поддерживают преобразование кодировок, то у новичков часто возникает вопрос о том, как именно привести кодировку текстового файла с русским текстом к понятному для SocialKit формату CP1251.

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

Если вы не уверены в том, в какой именно кодировке задан текст, то проще всего этот текст пересохранить через стандартный Блокнот Windows. При пересохранении Блокнот также покажет, в каком формате текст сейчас.

Опишем эту простую процедуру по шагам.

1. Открыть искомый текстовый файл в Блокноте Windows и выбрать пункт меню "Файл" -> "Сохранить как...".

Пример текстового файла, в котором русский текст задан в формате UTF, но это не очевидно при открытии.

2. В открывшемся диалоговом окне вы сразу видите, в какой кодировке был сохранён текст в текстовом файле.

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

Как видно, в примере текст в текстовом файле был ранее сохранён в кодировке UTF-8. Для изменения кодировке достаточно выбрать в выпадающем списке кодировку ANSI и нажать кнопку "Сохранить".

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

Txt кодировка

Поддержипроект!!!

Я очень часто использую txt файлы и периодически получается так, что кодировка txt файла не та. Которая требуется!

Но как я определил, что кодировка неправильная!? Тут мы собрались написать новую статью и там, для иллюстрации работы придется использовать txt файла и фот что он выводит, если применить javascript include

Давайте и здесь выведем этот пример:

Навигация по странице :
  1. Неправильная кодировка файла txt пример:
  2. Какая кодировка в txt
  3. Поменять кодировку txt файла

    Неправильная кодировка файла txt пример:

  1. Хотел показать результат неправильной кодировки, которая периодически встречается при работе с txt файлами...
  2. , , , "html" - "txt"
    https://dwweb.ru/__a-data/__all_for_scripts/__examples/js/include/different/javascript_include_primer.txt
    : .
    Либо же перейти на сам файл с неправильной txt кодировкой.

    Как мы видим из выше приведенного текста или… непонятно, что это вообще такое !? Как говорят это кракозябры, но теперь кракозябры у нас в txt файле

    А ответ прост! => Неправильная кодировка файла txt. Ну вернее не неправильная, а просто другая - ANCI ! И кстати мы уже немного писали о кодировке страницы.

    Какая кодировка в txt файле

  3. Самое простое, как определить кодировку txt файла открыть файл в блокноте(простой текстовый блокнот! Либо в любой другой программе), который есть в любой операционной системе. Давайте сразу узнаем и изменим кодировку файла txt
  4. Открываем наш файл, нажимаем сохранить как ... и в самом низу у нас есть строка с кодировкой, смотрим... - у нас кодировка ANCI

    Поменять кодировку txt файла

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

    Ну, или посмотреть на txt файл с правильной кодировкой

Вас может еще заинтересовать список тем : #HTML |

//dwweb.ru/comments_1_5/include/img/hand_no_foto.png

no

no

Еще никто не прокомментировал! COMMENTS+   BBcode Теги:

Автоопределение кодировки текста / Хабр


Введение

Я очень люблю программировать, я любитель и первый и последний раз заработал на программировании в далёком 1996 году. Но для автоматизации повседневных задач иногда что-то пишу. Примерно год назад открыл для себя golang. В качестве инструмента создания утилит golang оказался очень удобным. Итак.

Возникла потребность обработать большое количество (больше тысячи, так и вижу улыбки профи) архивных файлов со специальной геофизической информацией. Формат файлов текстовый, простой. Если вдруг интересно то это LAS формат.
LAS файл содержит заголовок и данные.

Данные практически CSV, только разделитель табуляция или пробелы.

А заголовок содержит описание данных и вот в нём обычно содержится русский текст. Это может быть название месторождения, название исследований, записанных в файл и пр.

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

В итоге изобрёл велосипед на golang и соответственно родилась маленькая библиотечка с возможностью детектировать кодовую страницу.

Про кодировки. Не так давно на хабре была хорошая статья про кодировки Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор Если хочется понять, что такое “кракозябры” или “кости”, то стоит прочитать.

В начале я накидал своё решение. Потом пытался найти готовое работающее решение на golang, но не вышло. Нашлось два решения, но оба не работают.


  • Первое “из коробки”— golang.org/x/net/html/charset функция DetermineEncoding()
  • Второе библиотека — saintfish/chardet на github

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

При поиске часто натыкался на готовые утилиты из мира linux — enca. Нашёл её версию скомпилированную для WIN32, версия 1.12. Её я тоже рассмотрю, там есть забавности. Я прошу сразу прощения за своё полное незнание linux, а значит возможно есть ещё решения которые тоже можно попытаться прикрутить к golang коду, я больше искать не стал.


Сравнение найденных решений на автоопределение кодировки

Подготовил каталог softlandia\cpd тестовые данные с файлами в разных кодировках. Содержимое файлов очень короткое и одинаковое. Одна строка “Русский в кодировке CodePageName”. Дополнил файлами со смешением кодировок и некоторыми сложными случаями и попробовал определить.

Мне кажется, получилось забавно.



Наблюдение 1

enca не определила кодировку у файла UTF-16LE без BOM — это странно, ну ладно. Я попробовал добавить больше текста, но результата не получил.


Наблюдение 2. Проблемы с кодировками CP1251 и KOI8-R

Строка 15 и 16. У команды enca есть проблемы.
Здесь сделаю объяснение, дело в том, что кодировки CP1251 (она же Windows 1251) и KOI8-R очень близки если рассматривать только алфавитные символы.


Таблица CP 1251


Таблица KOI8-r

В обеих кодировках алфавит расположен от 0xC0 до 0xFF, но там, где у одной кодировки заглавные буквы, у другой строчные. Судя по всему enca, работает по строчным буквам. Вот и получается, если подать на вход программе enca строку “СТП” в кодировке CP1251, то она решит, что это строка “яро” в кодировке KOI8-r, о чём и сообщит. В обратную сторону также работает.


Наблюдение 3

Стандартной библиотеке html/charset можно доверить только определение UTF-8, но осторожно! Пользоваться следует именно charset.DetermineEncoding(), поскольку метод utf8.Valid(b []byte) на файлах в кодировке utf-16be возвращает true.


Собственный велосипед

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

Для меня такая цель не стояла. Мне достаточно определять кодировки в предположении, что там есть русский язык. И второе, определять нужно по небольшому количеству символов – на 10 символах должно быть достаточно уверенное определение, а желательно вообще на 5–6 символах.


Алгоритм

Когда я обнаружил совпадение кодировок KOI8-r и CP1251 по местоположению алфавита, то на пару дней загрустил… стало понятно, что чуть-чуть придётся подумать. Получилось так.

Основные решения:


  1. Работу будем вести со слайсом байтов, для совместимости с charset.DetermineEncoding()
  2. Кодировку UTF-8 и случаи с BOM проверяем отдельно
  3. Входные данные передаём по очереди каждой кодировке. Каждая сама вычисляет два целочисленных критерия. У кого сумма двух критериев больше, тот и выиграл.

Критерии соответствия


Первый критерий

Первым критерием является количество самых популярных букв русского алфавита.

Наиболее часто встречаются буквы: о, е, а, и, н, т, с, р, в, л, к, м, д, п, у. Данные буквы дают 82% покрытия. Для всех кодировок кроме KOI8-r и CP1251 я использовал только первые 9 букв: о, е, а, и, н, т, с, р, в. Этого вполне хватает для уверенного определения.

А вот для KOI8-r и CP1251 пришлось доработать напильником. Коды некоторых из этих букв совпадают, например буква о имеет в CP1251 код 0xEE при этом в KOI8-r этот код у буквы н. Для этих кодировок были взяты следующие популярные буквы. Для CP1251 использовал а, и, н, с, р, в, л, к, я. Для KOI8-r — о, а, и, т, с, в, л, к, м.


Второй критерий

К сожалению, для очень коротких случаев (общая длина русского текста 5-6 символов) встречаемость популярных букв на уровне 1-3 шт и происходит нахлёст кодировок KOI8-r и CP1251. Пришлось вводить второй критерий. Подсчёт количества пар согласная+гласная.
Такие комбинации ожидаемо наиболее часто встречаются в русском языке и соответственно в той кодировке в которой число таких пар больше, та кодировка имеет больший критерий.

Вычисляются оба критерия, складываются и полученная сумма является итоговым критерием.
Результат отражен в таблице выше.


Особенности, с которыми я столкнулся

Чуть коснусь прелестей и проблем, связанных с golang. Раздел может быть интересен только начинающим писать на golang.


Проблемы

Лично походил по некоторым подводным камушкам из 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков.
Излишне переживая и пытаясь дуть на воду, прослышав от других о страшных ожогах от молока, переборщил с проверкой входного параметра типа io.Reader. Я проверял переменную типа io.Reader с помощью рефлексии.

//CodePageDetect - detect code page of ascii data from reader 'r' func CodePageDetect(r io.Reader, stopStr ...string) (IDCodePage, error) { if !reflect.ValueOf(r).IsValid() { return ASCII, fmt.Errorf("input reader is nil") } ...

Но как оказалось в моём случае достаточно проверить на nil. Теперь всё стало проще

func CodePageDetect(r io.Reader, stopStr ...string) (IDCodePage, error) { //test input interfase if r == nil { return ASCII, nil } //make slice of byte from input reader buf, err := bufio.NewReader(r).Peek(ReadBufSize) if (err != nil) && (err != io.EOF) { return ASCII, err } ...

вызов bufio.NewReader( r ).Peek(ReadBufSize) спокойно проходит следующий тест:

 var data *os.File res, err := CodePageDetect(data)

В этом случае Peek() возвращает ошибку.

Разок наступил на грабли с передачей массивов по значению. Немного тупанул на попытке изменять элементы, хранящиеся в map, пробегая по ним в range…


Прелести

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

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

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

Странно мало пришлось сидеть в отладчике, перечитывание кода обычно даёт результат.

Щенячий восторг от наличия массы инструментов из коробки, это чудное ощущение, когда компилятор, язык, библиотека и IDE Visual Studio Code работают на тебя вместе, слаженно.

Спасибо falconandy за конструктивные и полезные советы
Благодаря ему


  1. перевёл тесты на testify и они действительно стали более читабельны
  2. исправил в тестах пути к файлам данных для совместимости с Linux
  3. прошёлся линтером — таки он нашёл одну реальную ошибку (проклятущий copy/past)

Продолжаю добавлять тесты, выявился случай не определения UTF16. Обновил. Теперь UTF16 и LE и BE определяются даже в случае отсутствия русских букв

ᖂ Как узнать кодировку текстового файла. ᕢ И как ее изменить.


Наверно всем приходилось открывать текстовый файл, и видеть совсем неожиданную картину, когда вместо читаемого текста отображаются так называемые «кракозябры», типа того что видите ниже:

Не спишите отчаиваться и прощаться с файлом, содержимое документа легко можно прочитать, следуйте следующим шагам:

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

Данная прога работает практически со всеми кодировкам: Win-1251, KOI-8r, DOS, ISO-8859-5, MAC. Скачав файл, мы его разархивируем и запускаем, должно открыться окно с программой.

Смотрим на верхнее меню, указываем путь к текстовому файлу которых храниться у вас на компьютере.

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

Алексей Повловский

24
Июл

utf 8 - как изменить кодировку текстового файла, не открывая файл в оболочке программирования

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.Кодировка

- Как преобразовать текстовый файл с кодировкой Big5 в текстовый файл с кодировкой UTF8?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант
.Кодировка

- как читать текстовый файл в кодировке utf-8 с помощью Python

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.Кодировка

- как читать текст, скопированный из Интернета в текстовый файл с использованием Python

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с cowo
.

Как читать файл на Java с определенной кодировкой символов?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

Смотрите также