Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.07.2008, 15:23   #1
Xozer
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 17
По умолчанию кодировка наверно.

подскажите ллз, а то я что т запарился совсем. наваял скриптик, посылает сообщения в msmq очередь в качестве тела сообщения беру заранее сохранённую xml ку, лезу в базу и загружаю оттуда в эту xml нужные мне параметры.

вот скрипт

Const Connectstr = "conectstring"

Dim xmlDoc

Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.load("C:\..\Test1.xml") ' загружаем шаблон

sql = "sqltext" ' запрос к базе

set Conn1=CreateObject("ADODB.Connectio n")
set Rs1 = CreateObject("ADODB.Recordset")
Conn1.Open Connectstr
Rs1.open sql, Connectstr
do while not rs1.EOF ' выгружаю из базы
changdearg xmlDoc,"a",Rs1("a")
changdearg xmlDoc,"b",Rs1("b")
changdearg xmlDoc,"c",Rs1("c")
changdearg xmlDoc,"d",Rs1("d")
changdearg xmlDoc,"e",Rs1("e")
Rs1.movenext
loop
rs1.close

xmlDoc.save("C:\..\Test3.xml")'пров еряем то ли что нада получилось

sendmes ".\test",xmlDoc.xml

'функция заменяет значение
Function changdearg(xmll,idd,ival)
Dim objNodeList, plot
Set objNodeList = xmll.getElementsByTagName(idd)
If objNodeList.length > 0 then
For each x in objNodeList
x.text = ival
Next
Else
msgbox chr(34) & idd & chr(34) & " field not found." ' отладка
End If
end function

'Функция посыла сообщения в транзакционную очередь
function sendmes(destq,xbody)
Dim objQInfo
Dim objQSend
Dim objMessage

Set objQInfo = CreateObject("MSMQ.MSMQQueueInfo")
objQInfo.PathName = destq
Set objQSend = objQInfo.Open(2,0)

Dim xdisper
Set xdisper = WScript.CreateObject("MSMQ.MSMQTran sactionDispenser")
Dim Transact
Set Transact = xdisper.BeginTransaction

Set objMessage = CreateObject("MSMQ.MSMQMessage")
objMessage.Label = "Label1"
objMessage.Body = xbody
objMessage.Send objQSend, Transact
objQSend.Close
Set objQInfo = Nothing
Set objQSend = Nothing
Set objMessage = Nothing
Transact.Commit
end function

загвозка в том что в полученном сообщении в body содержиться лажа (
при просмотре вместо нужного мне
3C 3F 78 6D 6C 20 76 65 72 <?xml ver
73 69 6F 6E 3D 22 31 2E 30 sion="1.0
22 3F 3E 0D 0A 3C 44 61 74 "?>..<
вылазит вот такая вот штука
3C 00 3F 00 78 00 6D 00 6C <.?.x.m.l
00 20 00 76 00 65 00 72 00 . .v.e.r.
73 00 69 00 6F 00 6E 00 3D s.i.o.n.=
00 22 00 31 00 2E 00 30 00 .".1...0.
22 00 3F 00 3E 00 0D 00 0A ".?.>....
00 3C 00 44 00 61 00 74 00 .<.
ну в общем на скока я понял что то тут не так с переделкой из unicod а в ascii... а что с этим можно сделать в скрипте не знаю.
Xozer вне форума
Старый 24.07.2008, 20:26   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Во-первых, оформите свой код и результат. Во-вторых, чем вы смотрите результат? Ведь на самом деле все ок.
SkyM@n вне форума
Старый 28.07.2008, 12:03   #3
Xozer
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 17
По умолчанию Re

написано на vbs и скопировано полностью из файла, убрал всё лишнее оставил лишь суть. Работает в принципе и так.

Dim xmlDoc
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.load("C:\Test11.xml")
xmlDoc.save("C:\Test31.xml")

sendmes ".\test",xmlDoc.xml

function sendmes(destq,xbody)
Dim objQInfo
Dim objQSend
Dim objMessage

Set objQInfo = CreateObject("MSMQ.MSMQQueueInfo")
objQInfo.PathName = destq
Set objQSend = objQInfo.Open(2,0)

Dim xdisper
Set xdisper = WScript.CreateObject("MSMQ.MSMQTran sactionDispenser")

Dim Transact
Set Transact = xdisper.BeginTransaction

Set objMessage = CreateObject("MSMQ.MSMQMessage")
objMessage.Label = "label1"
objMessage.Body = xbody
objMessage.Send objQSend, Transact
objQSend.Close
Set objQInfo = Nothing
Set objQSend = Nothing
Set objMessage = Nothing

Transact.Commit
end function

исходные данные - xml документ по адресу C:\Test11.xml с содержанием
<?xml version="1.0"?>
<DataSet>

</DataSet>
что получаем - xml по адресу C:\Test31.xml
с содержанием
<?xml version="1.0"?>
<DataSet>
</DataSet>
и сообщение в очереди .\test
просматриваю содержание сообщения
Computer Managment -> Message Queuing -> Public Queues -> test -> Queue messages -> Properties -> Body
и вижу там
3C 00 3F 00 78 00 6D 00 6C <.?.x.m.l
00 20 00 76 00 65 00 72 00 . .v.e.r.
73 00 69 00 6F 00 6E 00 3D s.i.o.n.=
00 22 00 31 00 2E 00 30 00 .".1...0.
22 00 3F 00 3E 00 0D 00 0A ".?.>....
00 3C 00 44 00 61 00 74 00 .<.D.a.t.
61 00 53 00 65 00 74 00 3E a.S.e.t.>
00 0D 00 0A 00 3C 00 2F 00 .....<./.
44 00 61 00 74 00 61 00 53 D.a.t.a.S
00 65 00 74 00 3E 00 0D 00 .e.t.>...
0A 00 ..

пробовал проделать такие же преобразования с еже существующим нормальным сообщением созданым сторонним сервисом, но получалось тоже самое, отсюда делаю вывод что проблема в преобразовании кодировок при чтении\записи в скрипте, вопрос почему же так происходит и как это поправить...
Xozer вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляцая. наверно я чтото нетак делаю? Progn00ber Общие вопросы C/C++ 3 06.07.2008 16:19
наверно SystemTray RealSHELS Общие вопросы Delphi 5 28.05.2008 15:27
Кодировка Nixtone Помощь студентам 4 27.05.2008 14:12
Кодировка psp Общие вопросы Delphi 7 01.04.2008 19:18