Имя: Пароль:
1C
1С v8
Прочитать файл в koi8-r кодировке
, ,
0 woland
 
29.10.14
14:04
Подскажет пожалуйста как прочитать такой файл. Пытаюсь перекодировать текст. Но не получается. ЧТЯДНТ?

НоваяСтрока = НоваяСтрока+Перекодировка(ПодстрокаСабжект,"utf-8");


Функция Перекодировка(Стр="",Кодировка="windows-1251")
    Стрим = Новый COMОбъект("Adodb.Stream");
    Стрим.Type = 2;
    Стрим.Mode= 3;
    Стрим.charset="koi8-r";
    Стрим.Open();
    Стрим.WriteText(Стр);
    Стрим.Position=0;
    Стрим.charset=Кодировка;
    Рез=Стрим.ReadText(-1);
    Стрим.Close();
    Возврат    Рез;
КонецФункции
1 woland
 
29.10.14
14:06
Исходная строка
=?koi8-r?B?88/HzMHTz9fBzsnFIOnw/CBbaWQ9ZmNlMDNmMWQtNWU4ZC0xMWU0LWE4YTQt?= =?koi8-r?B?MDA1MDU2YjkwZmUwXTwwPg==?=
2 Галахад
 
гуру
29.10.14
14:08
Записать, наверное надо.
3 woland
 
29.10.14
14:13
Так тоже не работает

Функция Перекодировка(Стр="",Кодировка="windows-1251")
    Стрим = Новый COMОбъект("Adodb.Stream");
    Стрим.Type = 2;
    Стрим.Mode= 3;
    Стрим.charset="koi8-r";
    Стрим.Open();
    Стрим.WriteText(Стр);
    Стрим.Position=0;
    Стрим.charset=Кодировка;
    ИмяФайла = ПолучитьИмяВременногоФайла("txt");
    Стрим.SaveToFile(ИмяФайла,2);
    
    Текст = Новый ЧтениеТекста(ИмяФайла,КодировкаТекста.Системная);
    СтрокаТекста = Текст.Прочитать();
    //Рез=Стрим.ReadText(-1);
    Стрим.Close();
    Возврат    СтрокаТекста;
КонецФункции
4 Garikk
 
29.10.14
14:13
Base64 сначало надо наверное...
5 woland
 
29.10.14
14:14
(4) это как?
6 Garikk
 
29.10.14
14:15
исходная строка (1) в Base64
7 Garikk
 
29.10.14
14:17
88/HzMHTz9fBzsnFIOnw/CBbaWQ9ZmNlMDNmMWQtNWU4ZC0xMWU0LWE4YTQtB?MDA1MDU2YjkwZmUwXTwwPg==
8 Garikk
 
29.10.14
14:17
вот ваша исходная строка, это Base64 а уж потом KOI-8
9 woland
 
29.10.14
14:20
Вот что получается в результате (сначала в Base64 потом в TF-8)
п»ї77u/OiA9P2tvaTgtcj9CPzg4L0h6TUhUejlmQnpzbkZJT253L0NCYmFXUTlabU5s
TURObU1XUXROV1U0WkMweE1XVTBMV0U0WVRRdD89DQogPT9rb2k4LXI/Qj9NREEx
TURVMllqa3dabVV3WFR3d1BnPT0/PQ0KVGhyZWFkLQ==
10 Garikk
 
29.10.14
14:24
Из Base64
Получается
Согласование ИПЭ [id=fce03f1d-5e8d-11e4-a8a4-?005056b90fe0]<0>
11 Garikk
 
29.10.14
14:25
(9) не В, а ИЗ Base64
признак того что данные в Base64, это "==" в конце строки
12 woland
 
29.10.14
14:35
(11) Я перевожу строку в двоичные данные. А как потом прочитать эти данные?
13 woland
 
29.10.14
14:44
Перевел строку в двоичные данные. Пытаюсь прочитать с помощь stream. Вот что говорит:

Стрим.Read(Стр);

Ошибка при вызове метода контекста (Read): Типы не совпадают (0)
14 woland
 
29.10.14
15:09
Неужели никто не сталкивался?
15 Garikk
 
29.10.14
15:11
В интернетах пишут что двоичные данные сохранят в файл и обратно читают оттуда

imho изврат, но если работает...
16 woland
 
29.10.14
15:16
Результат = Base64Значение(ИсходнаяСтрока);
    Результат.Записать(ИмяВрФ);
    
    Текст = Новый ЧтениеТекста(ИмяВрФ);
    Результат = Текст.Прочитать();

Результат получается необределено.
17 Легат
 
29.10.14
15:42
Кстати, где можно получить подробную информацию про "Adodb"?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn