@UserTrue, Node.js будет обновлен в следующей версии
Как изменить кодировку при записи файла
-
@fox
Вы говорили что пользуетесь утилиткой давно,а проблем не возникало с конвертацией?
У меня почему-то она обрезает файл
Например csv оригинал имеет 130 строк выходной подрезает и получается 100 или 25-75 как получится...
от чего зависит не знаю но факт такой есть и это точно она делает,а не бас и ничто другое.
Кстати не всегда иногда и полный файл выдает -
Вы говорили что пользуетесь утилиткой давно
Где я такое говорил?
Например 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);