@FastSpace said in Как сравнить картинки?:
@Dodok ксевил и км много не решают каптч.
На второй третий круг обычно решают, был опыт работы. Тем более текстовую.
Вы говорили что пользуетесь утилиткой давно
Где я такое говорил?
Например csv оригинал имеет 130 строк выходной подрезает и получается 100 или 25-75 как получится...
Приложите проблемый файл к сообщению. посмотрю в чём может быть причина
В общем проблема более менее понятна.
Встречаются разные символы на источнике которые утилита не читает или не понимает, если их заменять на что-то тогда конвертится нормально без обрезок.
Символы которые встречаются в разных случаях разные,тут помоему общего решения нет. В каждом отдельном случае нужно смотреть на чем затык и добавлять его в обработку
Обратился к разработчику за помощью в решении проблемы с конвертацией.
Выложу это тут для будущих поколений ))
Через node js проблема решается полностью, для работы нужно поставить модуль encoding
Следующий код решает проблемы
var fs = require('fs');
var encoding = require('encoding');
//Читаем файл в utf-8 кодировке(BAS всегда сохраняет в utf-8)
var text = fs.readFileSync('C:/dev/encoding/text.txt', 'UTF-8');
//Конвертим
var result = encoding.convert(text, 'WINDOWS-1251', 'UTF-8');
//Пишем в файл
fs.writeFileSync('C:/dev/encoding/converted.txt', result);
Код если пути у нас в переменных
var fs = require('fs');
var encoding = require('encoding');
//Читаем файл в utf-8 кодировке(BAS всегда сохраняет в utf-8)
var text = fs.readFileSync([[NEW_VARIABLE]] + '111.csv', 'UTF-8');
//Конвертим
var result = encoding.convert(text, 'WINDOWS-1251', 'UTF-8');
//Пишем в файл
fs.writeFileSync([[NEW_VARIABLE2]] + '222.csv', result);
Отдельная благодарность @fox за участие и консультации
Сработал вариант @avtopars при сохранении.
Но потом когда BAS открывает заново этот файл он уже нечитаем.
Как его при открытии сконвертировать обратно в UTF-8
Пробовал заменить этот же вариант так:
var fs = require('fs');
var encoding = require('encoding');
//Читаем файл в utf-8 кодировке(BAS всегда сохраняет в utf-8)
var text = fs.readFileSync([[NEW_VARIABLE]] + '111.csv', 'WINDOWS-1251');
//Конвертим
var result = encoding.convert(text, 'UTF-8', 'WINDOWS-1251');
//Пишем в файл
fs.writeFileSync([[NEW_VARIABLE2]] + '222.csv', result);
Но ничего не получилось, кто-то знает решение? Спасибо.
const fs = require('fs');
const encoding = require('encoding');
let text = fs.readFileSync('./1251.txt');
text = encoding.convert(text, 'UTF-8', 'WINDOWS-1251');
fs.writeFileSync('./utf8.txt', text);