Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Декодировка текста в обработке

Декодировка текста в обработке
Я
   Selikat
 
24.11.17 - 14:45
Доброго дня! Есть обработка, вытягивающая с почти сообщения, разбирающая текст и создающая на его основе документы.
Столкнулся с проблемой, при получении писем от определенного отправителя 1с трактут текст сообщения как:
From: <anonimniy@640067937.ru>

X-Mailer: The Bat! (v3.99.3) Professional

Reply-To: <anonimniy@640067937.ru>

X-Priority: 3 (Normal)

MIME-Version: 1.0

Content-Type: text/plain; charset=UTF-8

Content-Transfer-Encoding: 8bit
Message-Id: <20171124063443.7C9E316401D7@nepropadu.ru>



: 09:34, 24.11.2017

: 123123123
:
Testpretenz

IP : 46.4.69.199

Русские символы пропадают после того как срабатывает функция декодировки win1251 в utf-8

Функция:

если ВКкс<>Индекс тогда
//            ВК.ПолучитьЗаголовок(Индекс);

            ВК=Письма.Получить(Индекс);
//            ВК.ПолучитьТело(Индекс);

            если НРЕГ(сокрлп(ВК.Кодировка))<>"utf-8" тогда
            стр="";
            Для каждого ТекстПисьма из ВК.Тексты цикл
                Стр=Стр+" "+ТекстПисьма.Текст;
            КонецЦикла;    
//                стр=ВК.Тело;

//                    
                Длина=СтрДлина(Стр);
//                

            Для Н=1 По Длина Цикл
                    Знак=Сред(Стр,Н,1);
                    Код=КодСимвола(Знак,1);
                    Если Код<128 Тогда
                        Итог=Итог+Знак;
                    ИначеЕсли (Код>=128)И(Код<192) Тогда
                        
                    Иначе
                        Н=Н+1;
                        Знак2=Сред(Стр,Н,1);
                        Код2=КодСимвола(Знак2,1);
                        Если Код=208 Тогда
                            Если Код2=129 Тогда 
                                Итог=Итог+"Ё";
                            Иначе 
                                Итог=Итог+Символ(КодСимвола("А",1)+Код2-144);
                            КонецЕсли;                                                      
                        ИначеЕсли Код=209 Тогда
                            Если Код2=145 Тогда 
                                Итог=Итог+"ё";
                            Иначе 
                                Итог=Итог+Символ(КодСимвола("р",1)+Код2-128);
                            КонецЕсли;
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;
                ном=Найти(Итог,"This message was delivered by MDaemon - http");
                если Ном<>0 тогда
                    Итог=Лев(Итог,ном-1);
                конецесли;
                Итог=СокрЛП(Итог);
            иначе
                стр="";
                Для каждого ТекстПисьма из ВК.Тексты цикл
                    Стр=Стр+""+ТекстПисьма.Текст;
                КонецЦикла;    
                Итог=СокрЛП(стр);
            конецесли;

Если функция не срабатывает вместо русских символов появляется Р через каждый символ, что явно указывает на win1251.
 
 
   Selikat
 
1 - 24.11.17 - 14:46
А это оригинал:


Отправлено: 09:34, 24.11.2017
Штрихкод: 123123123

Сообщение:
Testpretenz

IP отправителя: 46.4.69.19
   Beduin
 
2 - 24.11.17 - 14:49
(0) А так не
ТекстовыйДокумент.Записать(Кодировка.?
Зачем свою перекодировку писать?
   Selikat
 
3 - 24.11.17 - 14:51
(2) Текст сначала в файл, потом менять кодировку, а потом обратно?
   Beduin
 
4 - 24.11.17 - 14:53
(3) Это проще и надежней. Или не?
   Selikat
 
5 - 24.11.17 - 15:04
(2) C 7ки код преределанный... Научите -ТекстовыйДокумент.Записать(Кодировка.?
   Beduin
 
6 - 24.11.17 - 15:09
(5) ТекстДок = Новый ТекстовыйДокумент;
    ТекстДок.Прочитать("C:\test.txt");
    ТекстДок.Записать("C:\test.txt","windows-1251");
Типа так
   Selikat
 
7 - 24.11.17 - 15:20
(6) Не получается, я не из файла получаю текст, а из :

если ВКкс<>Индекс тогда
//            ВК.ПолучитьЗаголовок(Индекс);

            ВК=Письма.Получить(Индекс);
            
            если НРЕГ(сокрлп(ВК.Кодировка))<>"utf-8" тогда
            стр="";
            
            Для каждого ТекстПисьма из ВК.Тексты цикл
                Стр=Стр+" "+ТекстПисьма.Текст;
            КонецЦикла;    


И со стр работаю
   Beduin
 
8 - 24.11.17 - 15:23
(7) Временный файл делаешь. Но это писать не будут. Сам ищи)
   Сияющий в темноте
 
9 - 24.11.17 - 20:08
через каждый символ Р это и есть utf-8

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует