Понадобилась для работы фича автоматизированного определения кодовой страницы файла. Или более узкая задача, убедиться, что файл в UTF-8 без BOM.
В инете готовых утилит не нашёл. Может плохо искал?.. Если подскажете готовую утилиту под Win - буду благодарен.
Подумал, что Far ведь как-то определяет кодировки Какие исходники/методы за это отвечают? Не возбраняется перетащить их в свой проект?
Алгоритм определения кодировки
-
- Posts: 1329
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 32 times
- Been thanked: 61 times
Алгоритм определения кодировки
Надо полагать, что вы можете спокойно взять и использовать в своем проекте, если будете следовать условиям BSD-3 лицензии.
https://github.com/FarGroup/FarManager/ ... r.cpp#L354 где-то здесь (сильно не вчитывался)
https://github.com/FarGroup/FarManager/ ... r.cpp#L354 где-то здесь (сильно не вчитывался)
Last edited by Yegor on Wed 13 Oct, 2021 19:57, edited 1 time in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Алгоритм определения кодировки
Более узкая задача решается простейшим макросом. BOM для UTF-8 проверяется на первых трёх байтах, далее есть функция utf8.utf8valid, которой можно скормить произвольный кусок файла.
Алгоритм определения кодировки
Нет, решать эту задачу с помощью Far-а или LuaFar для меня не вариант.
Но фраза "utf8.utf8valid" навела меня на некий репозиторий на гитхабе "c-utf8-valid". Надо будет изучить.
Но фраза "utf8.utf8valid" навела меня на некий репозиторий на гитхабе "c-utf8-valid". Надо будет изучить.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
Алгоритм определения кодировки
file-detect-bom.bat. Оно?
Last edited by siberia-man on Thu 14 Oct, 2021 22:00, edited 1 time in total.
Алгоритм определения кодировки
Не, другое. Кстати, bom_file кажись определяет только по BOM. Я пользуюсь другим аналогичным батником, но суть у него та же. А мне хотелось бы угадывать кодировку и без BOM-а.
Last edited by lost on Thu 14 Oct, 2021 13:39, edited 2 times in total.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
Алгоритм определения кодировки
Да.
Есть идеи как это можно сделать и без BOM. Тоже на батнике (извращение, но можно).
Кстати file (Unix) умеет все это делать. Я только не помню, существует ли она отдельно вне пакетов типа cygwin/msys2.
updated
Существует - https://sourceforge.net/projects/gnuwin32/
Last edited by siberia-man on Thu 14 Oct, 2021 14:39, edited 1 time in total.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Алгоритм определения кодировки
Можно воспользоваться кодом функции utf8valid (он на Си).
А вот макрос (очень не идеальный, сделан вчера из спортивного интереса):
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
Алгоритм определения кодировки
Я переименовал скрипт в file-detect-bom.bat. Свой предыдущий пост, ссылающийся на текст скрипта, я поправил тоже.
А вот еще один скрипт file-detect-enc.bat. Он умеет определять кодировку не только по BOM. Не тестировал производительность на больших файлах. Наверно, все медленно.