Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/78: Рейтинг темы: голосов - 78, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506

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

07.10.2014, 10:11. Показов 15453. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть агент, на который постом отправляется xml документ, все отлично принимается, но русские буквы приходят вот в таком виде (вернее отображаются в сохраненном доке): ????????????? .
кот агента:


Code
1
2
3
4
5
6
    Set ns=New NotesSession
Set db=ns.currentdatabase
Dim pdoc As NotesDocument
Set pdoc=ns.Documentcontext
pdoc.form="REQUEST_CONTENT"
Call pdoc.Save(True,False)
Со стороны отправителя говорят что отправляют в UTF-8, попробовал содержимое поля REQUEST_CONTENT загнать в NotesStream и посмотреть Charset - Unicode.
Почему так отображаются русские символы, что можно сделать?

Скрин открытого документа в форме:
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2014, 10:11
Ответы с готовыми решениями:

Отобразить в HEX принятые данные
Дамы и господа, прошу прощения за глупый вопрос, но я уперся в тупик. Прошу помощи и сильно не ругаться, что такие темы были, не могу...

События на принятые данные по компорту
Доброго времени суток! Среда разработки "RAD Studio 10.2.3 Tokyo". Компонент comport "ComPort Library" Цель: 1) Наладить...

COM port. Не корректно принятые данные
День добрый. Я использую компонент ComPort Library version 4.10 by Dejan Crnila 1998-2002 и работаю я на Delphi XE. У меня есть 2...

26
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
07.10.2014, 11:07
Судя по всему либо клиент, либо сервер это воспринимает как Windows-1250
А сам файл нормально открывается?
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 11:09
в файл не сохранял, просто Documentcontext указал форму и сохранил. сейчас попробуй в файл сохранить содержимое поля REQUEST_CONTENT
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
07.10.2014, 11:09
Если есть желание "упороться" и написать свое, то Unicode encode-decode
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 11:14
записал содержимое в файл - вместо русских символов знаки вопроса
0
ty3uk
07.10.2014, 11:15
блин, вроде подобное было, тока не помню как исправлял, толи жёстко менял кодировку на вебе (в настройках сайта), толи в хпагесах что-то делал. Не помню.
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.10.2014, 11:21
сохранение в файл - надо указывать кодировку, иначе (в виндятке) используется вин1251
юникод тоже бывает разный UTF-8 (этот в *nix), UTF-16 (этот юзает виндятко) ...
если пытаться смотреть результат хмл из потока (в нотусне), без обработки (например через майм) - будут кракозябры (ибо оно хочет для платформы казать и пытается 1251)
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 11:26
в файл мне не надо сохранять, в дальнейшем сохранять вобще никуда не надо, нужно принять этот xml и обработать. сейчас сохраняю в нотесдок только для отладки
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 184
07.10.2014, 12:05
Делайте агент на Java, тогда проблем с кодировкой не будет.

А так через майм, например:


LotusScript
1
mimeE.SetContentFromText(stream, {text/html;charset="UTF-8"}, ENC_NONE)
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 12:27
Serduko
с java таже история
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
07.10.2014, 12:51
dymat
Тогда опишите подробнее, как формируется xml?
Указали что агент постом... и дали код, но там только сохранение, которое мало нам нужно.
Как формируется XML текст?
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 12:57
savl
Да я бы сам хотел знать, но не знаю, пост ко мне отправляет сервер другой конторы.
Даже не известно что за платформа отправляет, но точно не лотус
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 13:10
Могу попытаться узнать, что именно нужно у них спросить?
0
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 257
07.10.2014, 13:33
на сколько понимаю агент на сервере. А какая ОС на сервере? потому как обработка может вестись и с этой кодировкой. Если принять и тупо в ОС сохранить эту xml будут такие же крякозябли как и в документе или уже другие?
может чем-то поможет картинка по определению кодировки
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 13:50
erdi
Linux (debian), пробовал в файл сохранять - тоже самое, спасибо за картинку, попробую поределить
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.10.2014, 14:44
тулза для преобразования, она кажить - какая из какой, т.е. можно наглядно разглядеть, если получим русский (подбором или автоматически)
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
07.10.2014, 15:10
Post запрос шлется curlom из php

Вот кусок

Код (PHP):
$response = new DOMDocument("1.0","utf-8");
...
$ch = curl_init[/URL]($thys->__listener);
$data = array[/URL](
guid => $guid,
content => $response->saveXML()
);
...
curl_setopt[/URL]($ch, CURLOPT_POSTFIELDS, $data);
....
$result = curl_exec[/URL]($ch);
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
07.10.2014, 15:54
Цитата Сообщение от dymat
Почему так отображаются русские символы, что можно сделать?
Натыкался на эту гадость.
Это нотусовый баг. Пришедший массив байт (в кодировке UTF) пишется в поле документа без перекодировки и в дальнейшем воспринимается как LMBCS.
Т.е. строка "абра" приходит как "d0 b0 d0 b1 d1 80 d0 b0" и прямо так и кладется в поле. Т.к. notes хранит все в кодировке LMBCS, то при чтении данных из поля, данные байты декодятся в кракозябры.
В случае, если бы строка "абра" писалась стандарными нотусовыми методами - она лежала бы в поле как "14 04 30 14 04 31 14 04 40 14 04 30"

Вариантов решения несколько:
- выдернуть значение поля сишным апи в виде массива байт, перекодировать их (utf -> lmbcs) и положить обратно. Это низкоуровневое кунг-фу
- заставить клиента отправлять данные не в виде голого xml(application/xml), а по нотусовой форме (multipart-form-data). Это обчно не катит, т.к. ломает существующий протокол обмена.
- переписать агента на XPage с использованием Servlet API. Это оптимальный выбор, если не нужна поддержка семерки.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.10.2014, 16:35
turumbay разве mimeE.SetContentFromText(stream, {text/html;charset="UTF-8"}, ENC_NONE) не спасает?
типа:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Function EncodeMime(s As String, enc As String) As String
Dim ses As New NotesSession
Dim doc As notesdocument
Dim db As notesdatabase
Dim body As NotesMimeEntity
Dim tmpStrm As NotesStream
 
EncodeMime=""
ses.ConvertMIME = False
Set tmpStrm=ses.CreateStream
Set db = ses.CurrentDatabase
Set doc = db.createdocument
Call tmpStrm.WriteText(s)
stream.Position=0
Call stream.Truncate
Call stream.Close()
Set body = doc.CreateMIMEEntity
Call body.SetContentFromText(tmpStrm, "text/plain; charset=UTF-8", ENC_NONE)
Call body.EncodeContent(enc)
 
Dim content As String
content=body.ContentAsText
EncodeMime=content
Print body.Encoding
ses.ConvertMIME = True
End Function
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.10.2014, 16:54
ЗЫЖ я о перекодировке полученного, а не хранимого в поле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2014, 16:54
Помогаю со студенческими работами здесь

Как логировать принятые данные?
Хочу сделать логирование чата в программке одной. Нашел как логировать действия выполнения программы, а вот как логировать только принятые...

Сервер неверно обрабатывает принятые данные
Здравствуйте! Такая задача: клиент посылает серверу сумму бел. рублей и в конце приписывает USD/EUR, например, 15000USD. Сервер же передаёт...

Принятые данные через ajax искажаются
делаю ajax запрос, получаю ответ . Ответ совершенно другой при выводе на страницу. SaveCode = function(met){ ...

Как отобразить в окне Memo принятые данные по Com
Небольшой проект содержит Com прием с последующей передачей. На приеме может приходить от 844 до 4800 байт. на передаче только 128 байт....

перенёс проект, теперь данные принятые по USART не сходятся
Всё работало и работает под Win7, но по некоторым причинам начал переносить проект на linux, для платы настроил среду istypsi. Тупо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru