Как изменить кодировку при записи файла

Поддержка
  • @avtopars Вы посмотрите внимательнее, я сам этот файл создаю в директории

    AppData\Roaming\BrowserAutomationStudio\apps\21.0.1\
    

    и потом его конвертирую в нужную папку.


    пробывал так iconv -t WINDOWS-1251 -f UTF-8 C:\test\1.csv > "C:\test\1.csv"

    Нужно сохранять в другой файл. Можете поменять папку и сохранять с этим же именем

  • Мда... 2 дня гемора и наконец решение,мож кому-то тоже пригодится.
    Суть такая
    Проект от @fox работает,делаю вроде все так-же но ничего не работает.
    Вместо нужного результата после смены кодировки получаю свой файл но он пустой 0 байт.
    Создал новый проект чистый делаю все с нуля все работает, возвращаюсь в старый проект и тут вроде все также но не пашет и все тут...
    Решение оказалось банальным в старом проекте в названии файла было пару слов и из-за пробелов нечего не работало. Если файл 1 слово все прекрасно конвертируется.
    Логичный вопрос как решить проблему пробелов? Вернее как писать название файлов с пробелами так чтоб утилита это понимала?

  • @avtopars Действие "выполнить процесс" по сути создаёт bat файл и выполняет его, грубо говоря. А в командной строке если в пути встречается кирилица или пробелы, его обрамляют в кавычки. По сути можно любой путь обрамлять в кавычки, на всякий случай и всё.

  • @fox
    Вы говорили что пользуетесь утилиткой давно,а проблем не возникало с конвертацией?
    У меня почему-то она обрезает файл
    Например csv оригинал имеет 130 строк выходной подрезает и получается 100 или 25-75 как получится...
    от чего зависит не знаю но факт такой есть и это точно она делает,а не бас и ничто другое.
    Кстати не всегда иногда и полный файл выдает

  • @avtopars

    Вы говорили что пользуетесь утилиткой давно

    Где я такое говорил?

    Например csv оригинал имеет 130 строк выходной подрезает и получается 100 или 25-75 как получится...

    Приложите проблемый файл к сообщению. посмотрю в чём может быть причина

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

  • Как пример слова не нашего алфавита Pułaskiego Namysłów
    ну и вот на символах ł ó и будет обрезка
    Ну и символы типа 89×65×92 см где встретится × там и порежет
    @fox может есть мысли по поводу решения проблемы?

  • Обратился к разработчику за помощью в решении проблемы с конвертацией.
    Выложу это тут для будущих поколений ))
    Через 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 Пасиб, не только будущих но и счас. В лайв хаки можно смело. Правда с "узлами" не все дружат.. Пойдут вопросы как))

  • @fox возможно это только в лайброфис.
    Сейчас новый прикол) Конвертирую после каждой записи и сейчас перестал дописывать сконвертированный файл после того, как он начинает весить где-то 13кб) Хрен знает почему)

  • @fox Перезаписываю кодировку файла csv по вашему проекту. Почему то перезаписывается только первая строчка, а остальные удаляются.

  • Сработал вариант @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);
    

    Но ничего не получилось, кто-то знает решение? Спасибо.

  • @saanneekk

    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);
    
  • This post is deleted!

  • 0 Votes
    2 Posts
    322 Views
  • 0 Votes
    6 Posts
    786 Views
  • 0 Votes
    5 Posts
    667 Views
  • 0 Votes
    11 Posts
    1302 Views
  • 0 Votes
    11 Posts
    1821 Views