Имя: Пароль:
1C
 
Загрузка текстового файла UTF-8
0 FatDJ
 
16.09.10
11:23
Банк-клиент выдает выписку в известном формате, txt-файл, только он в кодировке UTF-8. Понятно, что я могу в ворде открыть и пересохранить, но нет ли возможности как-то не покидая 1С всё-таки её (выписку) сожрать? Спсб.
1 filh
 
16.09.10
11:30
поставить в выгрузке другой формат.
2 FatDJ
 
16.09.10
11:31
я, к сожалению, на банк не могу повлиять, есть только вот такое.
3 filh
 
16.09.10
11:31
+1
Функция ПреобразоватьСтрокуВУТФ8(Стр)
   Длина=СтрДлина(Стр);
   Итог="";
   Для Н=1 По Длина Цикл
       Знак=Сред(Стр,Н,1);
       Код=КодСимв(Знак);
       Если Код<128 Тогда
           Итог=Итог+Знак;
       Иначе
           Если (Код>=КодСимв("А"))И(Код<=КодСимв("п")) Тогда
               Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А"));
           ИначеЕсли (Код>=КодСимв("р"))И(Код<=КодСимв("я")) Тогда
               Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р"));
           ИначеЕсли (Знак="ё") Тогда
               Итог=Итог+Симв(209)+Симв(145);
           ИначеЕсли (Знак="Ё") Тогда
               Итог=Итог+Симв(208)+Симв(129);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Итог;
КонецФункции
Функция ПреобразоватьСтрокуИзУТФ8(Стр)
   Длина=СтрДлина(Стр);
   Итог="";
   Для Н=1 По Длина Цикл
       Знак=Сред(Стр,Н,1);
       Код=КодСимв(Знак);
       Если Код<128 Тогда
           Итог=Итог+Знак;
       ИначеЕсли (Код>=128)И(Код<192) Тогда
       Иначе
           Н=Н+1;
           Знак2=Сред(Стр,Н,1);
           Код2=КодСимв(Знак2);
           Если Код=208 Тогда
               Если Код2=129 Тогда Итог=Итог+"Ё";
               Иначе Итог=Итог+Симв(КодСимв("А")+Код2-144);
               КонецЕсли;
           ИначеЕсли Код=209 Тогда
               Если Код2=145 Тогда Итог=Итог+"ё";
               Иначе Итог=Итог+Симв(КодСимв("р")+Код2-128);
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Итог;
КонецФункции

http://infostart.ru/public/18816/
4 filh
 
16.09.10
11:32
+3 первая же ссылка в поисковике...
5 FatDJ
 
16.09.10
11:33
Спасибо огромное, буду пробовать!
6 DJ Anthon
 
16.09.10
11:34
привет, коллега )
7 FatDJ
 
16.09.10
11:34
Я честно искал перед тем, как задать вопрос)) Видимо, недостаточно хорошо. Спасибо еще раз за помощь.
8 FatDJ
 
16.09.10
11:35
(6) Приветствую! ))
9 skunk
 
16.09.10
11:35
а чтоокодировку текста в utf-8 не судьба использовать?
10 FatDJ
 
16.09.10
11:36
(9) Извините, не понял вопрос.
11 skunk
 
16.09.10
11:42
чтТекст = новый ЧтениеТекста(стрИмяФайла, КодировкаТекста.UTF8);
   стрСтрока = чтТекст.ПрочитатьСтроку();
   пока не стрСтрока = неопределено цикл
       сообщить(стрСтрока);
       стрСтрока = чтТекст.ПрочитатьСтроку();
   конеццикла;
12 filh
 
16.09.10
11:44
(11)
:)
13 Fragster
 
гуру
16.09.10
11:51
(3) жесть!
14 skunk
 
16.09.10
11:51
(12)не работает что-ли?
15 DJ Anthon
 
16.09.10
11:52
(11) ща он кааааааааак перейдет на 8ку резко так....
16 Fragster
 
гуру
16.09.10
11:52
// Сохраняем файл в кодировке UTF-8
    Stream = CreateObject("Adodb.Stream");
   Stream.Charset="utf-8";
   Stream.Type = 2;
   Stream.Mode= 3;
   Stream.Open();
   Stream.WriteText(ИсхСтрока);
   Stream.SaveToFile(КаталогПользователя()+"test.dot",2);
17 Fragster
 
гуру
16.09.10
11:53
(16)+ собственно, загрузка почти также происходит
18 skunk
 
16.09.10
11:53
(15)упс ... думал про восмерку спрашивали
19 FatDJ
 
16.09.10
11:55
(11) бодрячком! ))) спасибо за участие!

(16) спасибо, буду пробовать!
20 smaharbA
 
16.09.10
12:18
утф8 загружается даже командной строкой в виндуз
21 smaharbA
 
16.09.10
12:18
(19) ты мене спасибо говори, а не (16)
22 smaharbA
 
16.09.10
12:19
+ загружается несколько иначе, ставится вин1251 загружается, позиуионируется на ноль и меняется на утф8
Ошибка? Это не ошибка, это системная функция.