Принятые Данные Из Вне - Крокозябры

T

turumbay

ЗЫЖ я о перекодировке полученного, а не хранимого в поле

Не. Не то. Фактически требуется перегнать Unicode в LMBCS и считать полученный поток побайтово как utf-8.

Суть проблемы: читая скриптом поле из документа, мы фактически вызываем функцию перекодировки lmbcs->Unicode, но в данном случае, из-за бага при сохранении, этой функции на вход подается utf8. Нам нужно получить сырые данные из поля(нули и единицы), но сделать это скриптом мы не можем.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
не совсем понимаю...
т.е.
Со стороны отправителя говорят что отправляют в UTF-8, попробовал содержимое поля REQUEST_CONTENT загнать в NotesStream и посмотреть Charset - Unicode.
прогоняем через майм и кладем строку в поле

Добавлено: LMBCS здесь уже обсуждался в контексте
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
или речь о том что REQUEST_CONTENТ уже испорчено?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
есть даже
Visual Basic:
Sub Initialize
   Dim txt As String
   txt = {рЬРЗр░РьрўрҐр}
   MsgBox Convert(txt, {tmp.lmbcs})
End Sub

Function Convert(rText As String, rFilePath As String) As String
   Dim sn As New NotesSession()
   Dim ns As NotesStream
   'If Dir$(rFilePath) <> "" Then Kill rFilePath
   Set ns = sn.CreateStream()
   Call ns.Open(rFilePath, "LMBCS")
   ns.Position = 0
   Call ns.Truncate()
   Call ns.WriteText(rText)
   Call ns.Close()
   Call ns.Open(rFilePath, "UTF-8")
   Convert = ns.ReadText()
   Call ns.Close()
End Function
и кракозябры становятся
---------------------------

---------------------------
Красно?
---------------------------
ОК
---------------------------
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
кракозябры при вставке покоцались, в агенте они как в стартовом посте

Добавлено: и еще есть вот упомянутый СиАПИ, но чета у меня не пошло (перекодировка), разбираться не стал, простите :)
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Новую тему решил не создавать. Продолжим.

На входе агента посылка multipart/form-data
Код:
Content-Length: 111349
Content-Type: multipart/form-data
Accept: application/json
Connection: close
Accept-Encoding: gzip,deflate

Content-ID: new MIME document

--myBoundary
Content-Disposition: form-data; name="FILE"
Content-Type: application/x-pkcs7-signature; charset=utf-8; name=test.pdf.p7s
Content-Transfer-Encoding: 8bit

ДАЛЕЕ ИДЕТ ФАЙЛ

--myBoundary--

Как эту посылку обработать?
Как получить файл? Вариант преобразования в Base64 не предлагать
Я рассчитывал, что при такой посылке должен получиться документ с прикрепленным файлом.
Но магии не произошло. Документ есть, но файла нет.
Все данные записались в поля REQUEST_CONTENT_xxx
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
Все данные записались в поля REQUEST_CONTENT_xxx
в письмах типа майм все д.б. в body (РТ с отображением майм), т.е. файл должен лечь в соответ. MimeEntity, на java так
Java:
            if (stream!=null && stream.getBytes()>0) {
                System.out.format("RT Flushing: %s ...\n",getFileName());
                final MIMEEntity child = body.createChildEntity();
                MIMEHeader header = child.createHeader("Content-Disposition");
                header.setHeaderVal("attachment; filename=\"" + getFileName() + "\"");
                String fileSuffix = getFileName().substring(getFileName().lastIndexOf(".")+1);
                child.setContentFromBytes(stream, MIMEType.get(fileSuffix), MIMEEntity.ENC_IDENTITY_BINARY);
                stream.close();
                header.recycle();child.recycle();body.recycle();stream.recycle();
            }
в ЛС аналогично, MIMEEntity.ENC_IDENTITY_BINARY задает что NotesStream бинарный
 
Последнее редактирование:

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Я так и сделал, но не очень хорошее решение
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
Я так и сделал, но не очень хорошее решение
"записались" это тогда как расшифровать, почему post формы дал аттач в поле с названием REQUEST_CONTENT_xxx, как происходила обработка запроса?
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
В том-то и дело, что это не пост формы, которая есть в дизайне.
Обработка в агенте. Агент дергается по http и ему отдается посылка, которую я указал выше
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
В том-то и дело, что это не пост формы, которая есть в дизайне.
Обработка в агенте. Агент дергается по http и ему отдается посылка, которую я указал выше
если есть POST к-л веб формы там нет доминошных полей и кто как захочет так и запихает, да хоть вовсе бинарный поток, остальное руками - как и написано
непонятны ожидания - как могло бы быть?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Function EncodeMime(s As String, enc As String) As String
'...
Call body.EncodeContent(enc)
'...
End Function[/CODE]
Интересно, а кто-то пробовал этот код? Он на вызове EncodeContent заваливается - Type mismatch, т.к. на вход ожидается параметр типа Integer.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
451
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!