|
Утилита перекодировки файла из 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
|
||||
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
|
||||
21
arsik
гуру
02.02.23
✎
13:22
|
(20) Ну воспользуйся уже поиском Перекодировка txt в utf-8. Adodb.Stream не работает. Что делать?
|
|||
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
|
||||
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
|
тест
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |