Имя: Пароль:
1C
1С v8
Как преобразовать строку?
,
0 Галахад
 
гуру
26.03.14
13:51
Есть строка символов в кодировке WIN1251
   C0 D1 CF C4 20 D8 D2 D0 C8 D5 2D 4C 49 47 48 54
Как привести ее в человекочитаемый вид?
1 Chai Nic
 
26.03.14
13:52
Программу написать)
2 vmv
 
26.03.14
13:52
таблицу кодировки выучить
3 vicof
 
26.03.14
13:53
Нанять перекодировщика
4 vmv
 
26.03.14
13:54
500К за фразу
5 skunk
 
26.03.14
13:54
6 Галахад
 
гуру
26.03.14
14:03
(1) Гм. Я думал есть готовый алгоритм.

(5) Что-то не получается.
7 Bot01
 
26.03.14
14:08
ЗаписьТекста/ЧтениеТекста или ТекстовыйДокумент.
8 Галахад
 
гуру
26.03.14
14:13
(7) Типа того? Или как?

    ИмяФайла = "c:\1\тест.txt";
    
    Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
    Текст.ЗаписатьСтроку("FC 00 06 00 01 05 F0 00 C0 D1 CF C4 20 D8 D2 D0 C8 D5 2D 4C 49 47 48 54");
    Текст.Закрыть();
    
    Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
    Стр = Текст.ПрочитатьСтроку();
    Пока Стр <> Неопределено Цикл
        Сообщить(Стр);
        Стр = Текст.ПрочитатьСтроку();
    КонецЦикла;
9 Bot01
 
26.03.14
14:14
10 ДенисЧ
 
26.03.14
14:14
(8) не взлетит
11 Chai Nic
 
26.03.14
14:15
(8) Неа, надо последовательно получать подстроки шестнадцатиричных октетов, далее их переводить в число, и после получать символ по коду.
12 skunk
 
26.03.14
14:17
(6)что не получается ... получить из (0) - АСПД ШТРИХ-LIGHT?
13 Torquader
 
26.03.14
14:17
Заменить пробелы на = и использовать Quoted-Printable.
14 skunk
 
26.03.14
14:18
15 Галахад
 
гуру
26.03.14
14:24
(9) Спасибо попробую.

(11) Это как?
C0 ---> 192 ---> Символ(192)

(12) Да, верно.
16 Torquader
 
26.03.14
14:30
АСПД ШТРИХ-LIGHT
(12) Там действительно это записано.
А получаете это вы откуда в таком "извращённом" виде ?
17 Галахад
 
гуру
26.03.14
14:35
(9) Что-то не получается.
    ИмяФайла = "c:\1\1.txt";
    ИмяФайла2     = "c:\1\2.txt";
    
    Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ANSI);
    txt = Текст.Прочитать();
    Текст.Закрыть();    
    
    файлЗапись = Новый ЗаписьТекста(ИмяФайла2,КодировкаТекста.UTF8);    
    файлЗапись.Записать(txt);
    файлЗапись.Закрыть();    

(16) Так из него же. С АСПД. Вот так:

    КомандаКВыполнению =     "FC";
                            
    КомандаВыполнена = Объект.Драйвер.DeviceControlHEX(Объект.ИДУстройства, КомандаКВыполнению, РезультатКоманды);
18 skunk
 
26.03.14
14:38
(16)в "извращенном" это как?
19 Torquader
 
26.03.14
14:40
(18) Ну, как написано в (17) Драйвер.DeviceControlHex - хочется человеку водиться с раскодированием.
P.S. просто в 1С строка будет преобразована в Unicode-формат и поймать коды будет просто нереально, так как их придётся ещё и из 1251 в Unicode преобразовывать.
20 Галахад
 
гуру
26.03.14
14:43
(19) Есть желание использовать один драйвер.
21 skunk
 
26.03.14
14:45
22 skunk
 
26.03.14
14:47
(19)нихера не понял ... зачем драйвер ... если в басике есть функция для конвертации строки кодов в строку
23 Torquader
 
27.03.14
16:19
(22) В управляемых формах в 1С есть интерфейс драйвера, через который даже пикнуть нельзя, но, есть функция приёма-передачи строк как есть, и чтобы люди с кодировкой не мучились (представьте, как например, работа из javascript с драйвером Штрих-М "очень жизнеутверждающее зрелище", а уж если в COM-порт писать, то байты преобразуются в символы исходя из текущей кодировки) сделали вывод шестнадцатеричных слов.
Так что - приходится "брать бубен" и вперёд в освоение способов передачи данных.
24 cw014
 
27.03.14
16:39
1 500 - напишу преобразователь UTF-8 -> ANSI )))
25 Torquader
 
27.03.14
16:42
(24) Только нужно ещё помнить, что ANSI зависит от установленной по умолчанию кодировки, причём, в Windows 7 уже даже и от выбранной раскладки клавиатуры.
Поэтому, лучше этот вопрос оставить для VbScript, который умеет это делать очень просто.
UTF-8 -> Unicode -> ANSI
26 Wobland
 
27.03.14
16:48
>C0 D1 CF C4 20 D8 D2 D0 C8 D5 2D 4C 49 47 48 54
что тут нечеловекочитаемого? цэ-ноль, дэ-один, цэ-эф..
27 Torquader
 
30.03.14
01:24
(26) Ну - читаемо там всё, а вот работать с этим в 1С - это уже другое дело.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн