Набор записей ADO не может быть сохранен в DOM XML

Этот набор записей не может быть сохранен в DOM как XML.

Некоторые данные столбца содержат специальные символы. Я могу прокручивать каждую запись и Response.Write() поля без ошибок.

Set adoCn = Server.CreateObject("ADODB.Connection")
adoCn.Open Application("conn_string")
Set objCommand = Server.CreateObject("ADODB.Command")
Set objDOM = Server.CreateObject("Msxml2.DOMDocument.3.0")

objCommand.ActiveConnection = Application("conn_string")

spQry = "SP_QUERY"
objCommand.CommandText = spQry
objCommand.CommandType = adCmdStoredProc

Set objRs = objCommand.Execute

objRS.save objDOM, adPersistXML //Error occurs here
Set objCommand = Nothing
objRS.Close
adoCn.Close
Set objRS = Nothing

Ошибка: неизвестная ошибка

Если я перепечатываю текст в базе данных, таким образом избавляясь от спецсимволов, то все работает нормально.

Я попытался добавить следующее, чтобы увидеть, помогло ли это, но пока не повезло:

Response.CodePage = 65001
Response.Charset="UTF-8"

Кто-нибудь знает, как я могу сохранить этот набор записей в DOM, есть ли в нем специальные символы или нет?

[EDIT] Добавлено изображение текста введите здесь описание изображения

[EDIT2] Попытка выполнить потоковую передачу набора записей после выполнения запроса:

К сожалению, я не очень далеко продвинулся с этим, при установке Charset выдало ошибку: "The parameter is incorrect", на самом деле ошибка возникает в строке oStream.ReadText. Когда я комментирую набор символов, Response.Write в конце показывает только квадратные скобки.

Set objRs = objCommand.Execute

sXML = ""

Set oStream = Server.CreateObject("ADODB.Stream")
oStream.Charset = "utf-8" //This produced an error: The parameter is incorrect 

oRecordset.save oStream, adPersistXML
oStream.Position = 0

sXML = oStream.ReadText 

oStream.Close 
Set oStream = Nothing

Response.Write("[" & sXML & "]")

person Hank    schedule 09.09.2014    source источник
comment
Можете ли вы привести примеры специальных символов?   -  person oracle certified professional    schedule 09.09.2014
comment
@oraclecertifiedprofessional абсолютно точно смотрите редактирование выше, ближе к концу первого абзаца в слове elses. Я думаю, что есть и другие символы, но они не отображаются, потому что я пытался удалить только что упомянутый, но он все равно выдавал ошибку.   -  person Hank    schedule 09.09.2014
comment
хм, глядя на документацию он отмечает A Recordset saved in XML format is saved using UTF-8 format. When such a file is loaded into an ADO Stream, the Stream object will not attempt to open a Recordset from the stream unless the Charset property of the stream is set to the appropriate value for UTF-8 format. Интересно, могут ли ваши специальные символы создавать поток в неподдерживаемом наборе символов. Вместо этого вы можете попробовать использовать ADODB.Stream, что позволяет явно указать целевой набор символов.   -  person oracle certified professional    schedule 09.09.2014
comment
Дал потоковую передачу, но не очень далеко, может быть, вы могли бы помочь мне с примером. См. Edit2 выше.   -  person Hank    schedule 10.09.2014
comment
Извините, я думаю, что у меня должна быть установлена ​​другая версия ADODB, потому что я не могу воспроизвести ошибку. Я нашел другое упоминания этой проблемы (похоже, это связано с копированием и вставкой из документов Office со смарт-кавычками), но нет решения   -  person oracle certified professional    schedule 10.09.2014
comment
Итак, вы можете Response.Write sXML (потоковая строка xml) просто отлично?   -  person Hank    schedule 10.09.2014
comment
да, я боюсь, что так. Все, что я могу предложить, это попытаться обновить/переустановить ADODB и повторить попытку или запустить одноразовый процесс нормализации ваших данных, чтобы заменить ваши специальные символы соответствующими заменами.   -  person oracle certified professional    schedule 10.09.2014


Ответы (1)


Я не мог найти способ отобразить данные. Поэтому я вручную изменил текст в БД, так как там было всего 4 записи.

В итоге я боролся с этой проблемой на стороне ввода данных, когда данные формы обрабатываются и вставляются или обновляются.

Я просмотрел текст, анализируя каждый символ, удаляя все неклавиатурные символы, создавая чистую строку.

person Hank    schedule 11.09.2014