Здравствуйте, гость ( Вход | Регистрация )

> utf-8 cp1251 сортировка файлов(фильтр)
FREEON
сообщение 5.1.2020, 14:44
Сообщение #1


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.346
Возраст: 25



Кто знает программу, плагин, фильтр или способ сортировки текстовых файлов(массовый) по кодировке. Что бы например выбрал папку и там показывалось какой файл находится кодировке utf-8 или cp1251 или еще какой.
Массовая перекодировка различными программами не дает желаемого результата т.к. из перекодировки допустим из cp1251 в utf-8 будет норм вариант если этот файл в этой кодировке но если он был в ютф то при кодировке выдаст крокозябры. Поэтому и нужно точный фильтр который показал какой файл в какой кодировке изначально. Знаю к пилоту мало относится но есть ли разумное решения вопроса
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 6.1.2020, 9:16
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26324
Пользователь №: 16.971
Возраст: 29



Цитата
s = f:read("*a")

Исправил.
код
Код
--lua
function utf ( path_to_file )
    local f = io.open(path_to_file, "rb")  -- открыть файл
    if f then   -- если открылся
        local s = ''
        s = f:read("*a")     -- прочитать файл
        f:close()  -- закрыть файл

        if string.match(table.concat({s:byte(1, 3)}, ' '), "239 187 191")  then return 1 end   -- если есть bom uft8

        -- поиск русских символов в юникоде
        for i = 144, 191 do
            if string.match(table.concat({s:byte(1, #s)}, ' '), "208 " .. tostring(i)) then return 1 end
        end
        for i = 128, 143 do
            if string.match(table.concat({s:byte(1, #s)}, ' '), "209 " .. tostring(i)) then return 1 end
        end
        return 0
    end
    return -1
end

log "clear"  log "mode compact"
local resultarray, count = dir ([[C:\]], "*.txt", "norecursion")  -- поиск txt файлов
log ("Найдено файлов: " .. count)

if count > 0 then
    for i=1, #resultarray do
        local result = utf ( resultarray[i][1] )  -- вызов функции
        if result == 0 then log("ANSI    " .. resultarray[i][1]) end
        if result == 1 then log("UTF8    " .. resultarray[i][1]) end
    end
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.9.2025, 10:47
Designed by Nickostyle