Имя: Пароль:
IT
Админ
Утилита перекодировки файла из UTF-8 в Windows-1251
,
0 OnePrg
 
02.02.23
12:14
Посоветуйте проверенную утилиту перекодировки файла из UTF-8 в Windows-1251.

Пока нашёл только win-conv, но он ругается

win_iconv -f utf-8 -t windows-1251 "1.csv" > "2.txt"
conversion error: Illegal byte sequence
1 OnePrg
 
02.02.23
12:14
утилита должна работать через командную строку
2 PLUT
 
02.02.23
12:17
1C умеет

в заклинании можно указать нужную кодироку

Новый ЧтениеТекста()

при записи аналогично
3 H A D G E H O G s
 
02.02.23
12:19
4 OnePrg
 
02.02.23
12:29
(2) а 7.7?
5 PLUT
 
02.02.23
12:30
(4) вы с какой планеты?
6 PLUT
 
02.02.23
12:33
(5) товарищ гугл

https://infostart.ru/public/18816/

ну и
https://www.vdgb.ru/blog/kak-v-7-7-prochitat-fajl-csv-v-utf-8/

оттудова цЫтата:

Перем Имя,Путь;
      

     Если ФС.ВыбратьФайл(0,Имя,Путь,"","*.*|*.*","*")=0 Тогда
      

     Возврат;
      

     КонецЕсли;
      

     Файл=Путь+Имя;
      

     Стрим=СоздатьОбъект("ADODB.Stream");
      

     Стрим.Type=2;
      

     Стрим.charset="windows-1251";
      

     Стрим.Open();
      

     Стрим.LoadFromFile(Файл);
      

     Стрим.charset="utf-8";
      

     Стр=Лев(Стрим.ReadText(),255);
      

     Сообщить(Стр);
7 arsik
 
гуру
02.02.23
12:34
Через питон еще можно или повершелл
8 Garykom
 
гуру
02.02.23
12:35
9 PLUT
 
02.02.23
12:37
(8) микросервис на го, ёпта!

golang win1251 <-> utf8 encoding issue demonstration
10 arsik
 
гуру
02.02.23
12:38
(9) Зачем микросервис? Экзешник скомпилил и го перекодировать все что под руку попадется.
11 Garykom
 
гуру
02.02.23
12:44
https://gnuwin32.sourceforge.net/packages/libiconv.htm
Binaries         Zip
там внутри bin есть iconv.exe
12 Garykom
 
гуру
02.02.23
12:44
(10) именно
13 PLUT
 
02.02.23
12:45
(6) там по второй сцылке в примере есть что-то на повершелловском/bat-овском
14 arsik
 
гуру
02.02.23
12:45
С версии 6.2
get-content IN.txt | out-file -encoding "windows-1251" -filepath OUT.txt
15 Garykom
 
гуру
02.02.23
12:48
(12)+ https://stackoverflow.com/questions/32518432/how-to-convert-from-an-encoding-to-utf-8-in-go
готовое в ответах только японскую кодировку заменить на нужное
16 OnePrg
 
02.02.23
13:04
(3)

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\AkelPad\AkelPad.exe"" /OpenFile(""D:\DOWNLOADS\1.csv"")" , 0, 1
WshShell.Run """C:\Program Files\AkelPad\AkelPad.exe"" /SaveFile(""D:\DOWNLOADS\2.txt"",windows-1251) " , 0, 1

не ругается, но и ничего не делает
17 arsik
 
гуру
02.02.23
13:13
(16) Ты нормальный вообще? Эти 2 команды никак друг с другом не связаны.
18 OnePrg
 
02.02.23
13:15
(17)

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\AkelPad\AkelPad.exe"" /OpenFile(""D:\DOWNLOADS\1.csv"") /SaveFile(""D:\DOWNLOADS\2.txt"",windows-1251)" , 0, 1


так заработало
спасибо!!!
19 OnePrg
 
02.02.23
13:16
(6)

    Стрим=СоздатьОбъект("ADODB.Stream");
    Стрим.Type=2;
    Стрим.charset="utf-8";    
    Стрим.Open();
    Стрим.LoadFromFile(ИмяФайлаУТФ8);
    Стрим.charset="windows-1251";
    Т = СоздатьОбъект("Текст");
    Т.КодоваяСтраница(0);
    Т.ДобавитьСтроку(Стрим.ReadText());
    Т.Записать(ИмяФайла1251);    


тут что не так?  не работает, сохраняет файл в кодировке UTF-8
20 OnePrg
 
02.02.23
13:18
(6)

>https://infostart.ru/public/18816/

не все символы перекодирует - остаются кракозяблы
21 arsik
 
гуру
02.02.23
13:22
22 vbus
 
02.02.23
13:23
Python пойдет?

import sys

def recod(in_name, out_name):
    with open(in_name, encoding='utf-8' ) as infile:
        file=infile.read()
    with open(out_name, 'w', encoding='cp1251') as outfile:
        outfile.write(file)



if __name__ == "__main__":
    if len (sys.argv) >= 3:
        recod(sys.argv[1], sys.argv[2])
    else:
        print('Мало аргументов, нужно имя файла входного, имя файла выхоного')
23 PLUT
 
02.02.23
13:29
вот тут быстрый старт в змею

https://geniy1s.ru/startuem-v-python/
24 PLUT
 
02.02.23
13:30
(23) "Итого менее чем за час 1с-ник, который раньше никогда не работал с питоном, смог адаптировать полезный скрипт на Python. Не боги горшки обжигают."
25 OnePrg
 
02.02.23
13:37
Всем спасибо.

AkelPad работает.
Вариант с ADODB.Stream нравится больше,  создам по нему отдельную тему.
26 PLUT
 
02.02.23
13:39
(25) ностальгия

Состояние("" + Формат(100 * СтримВход.position/Всего,"Ч(0)5.2")+"%");
27 KJlag
 
02.02.23
13:39
(25)  >Вариант с ADODB.Stream нравится больше,  создам по нему отдельную тему.

на своем сайте, на хабре, ну и может быть в инсте?
Г1С, это ты?
28 KJlag
 
02.02.23
13:40
(27) а, стоп. не увидел, что на ADODB.Stream не взлетело.
29 Arbuz
 
02.02.23
13:45
Подождите-подождите, вот вам перловка до кучи:


use strict;
use warnings;

open(my $INFILE,  '<:encoding(UTF-8)',  $ARGV[0]) or die $!;
open(my $OUTFILE, '>:encoding(cp1251)', $ARGV[1]) or die $!;

while (<$INFILE>) {
   print $OUTFILE $_;
}
30 eklmn
 
гуру
02.02.23
15:55
ну тогда и я добавлю!
<code>
    файл = Новый ТекстовыйДокумент;
    s = КаталогВременныхФайлов()+"utfto1251.ps1";
    файл.УстановитьТекст("$utffile = Get-Content C:\temp\testutf8.txt
                             |$russian = [System.Text.Encoding]::getencoding(1251)
                             |$rusbyte = $russian.getbytes($utffile)
                             |$s = [system.text.encoding]::convert(([text.encoding]::getencoding('utf-8')),$russian,$rusbyte)
                             |echo $russian.getstring($s) > 'C:\temp\text1251.txt'");
    файл.Записать(scr,КодировкаТекста.Системная);
    ЗапуститьПриложение("powershell -executionpolicy unrestricted -command "+s,,Ложь);

</code>
31 eklmn
 
гуру
02.02.23
15:56
косячок!

файл.Записать(s,КодировкаТекста.Системная);
32 Злопчинский
 
02.02.23
15:58
тест
Закон Брукера: Даже маленькая практика стоит большой теории.