![]() |
|
Декодировка текста в обработке | ☑ | ||
---|---|---|---|---|
0
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. |
|||
1
Selikat
24.11.17
✎
14:46
|
А это оригинал:
Отправлено: 09:34, 24.11.2017 Штрихкод: 123123123 Сообщение: Testpretenz IP отправителя: 46.4.69.19 |
|||
2
Beduin
24.11.17
✎
14:49
|
(0) А так не
ТекстовыйДокумент.Записать(Кодировка.? Зачем свою перекодировку писать? |
|||
3
Selikat
24.11.17
✎
14:51
|
(2) Текст сначала в файл, потом менять кодировку, а потом обратно?
|
|||
4
Beduin
24.11.17
✎
14:53
|
(3) Это проще и надежней. Или не?
|
|||
5
Selikat
24.11.17
✎
15:04
|
(2) C 7ки код преределанный... Научите -ТекстовыйДокумент.Записать(Кодировка.?
|
|||
6
Beduin
24.11.17
✎
15:09
|
(5) ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать("C:\test.txt"); ТекстДок.Записать("C:\test.txt","windows-1251"); Типа так |
|||
7
Selikat
24.11.17
✎
15:20
|
(6) Не получается, я не из файла получаю текст, а из :
если ВКкс<>Индекс тогда // ВК.ПолучитьЗаголовок(Индекс); ВК=Письма.Получить(Индекс); если НРЕГ(сокрлп(ВК.Кодировка))<>"utf-8" тогда стр=""; Для каждого ТекстПисьма из ВК.Тексты цикл Стр=Стр+" "+ТекстПисьма.Текст; КонецЦикла; И со стр работаю |
|||
8
Beduin
24.11.17
✎
15:23
|
(7) Временный файл делаешь. Но это писать не будут. Сам ищи)
|
|||
9
Сияющий в темноте
24.11.17
✎
20:08
|
через каждый символ Р это и есть utf-8
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |