2016-07-01 3 views
-1

У меня есть XML, который я читал с объектом типа Msxml2.DOMDocument.4.0. В этом XML я получаю символы вроде ë. Когда я читаю этот символ, он приходит в код VBScript, например, . Кодировка XML установлена ​​в UTF-8.Кодирование специальных символов из XML

Это одна часть XML, что я получаю:

<?xml version="1.0" encoding="utf-8"?> 

<shiporder> 

    <DriverData> 

    <DriverLicenseCountry>Australië</DriverLicenseCountry> 

    </DriverData> 

</shiporder> 

И это код VBScript, который я использую для создания объекта:

Set oXml = Server.CreateObject("Msxml2.DOMDocument.4.0") 

Я прочитал узел, как это:

Function GetXMLval2(oDoc, sNoeud) 
    Dim oNoeud 
    Dim objNode 
    Dim colNodes 
    Dim sRes 

    sRes="" 

    Set colNodes=oDoc.selectNodes(sNoeud) 

    For Each objNode in colNodes 
     sRes= objNode.Text 
    Next 

    GetXMLval2=sRes 

End Function 

Где oDOC является XML и sNoeud это имя узла , objNode.Txt возвращает этот странный персонаж.

Любые идеи?

+2

«Я читаю узел как это» - и что с ним делать? Мы не можем сказать, где вы показываете/просматриваете персонажа. –

+0

@JonSkeet не имеет значения, что я делаю с ним. Я могу отправить его в БД, отобразить его или сохранить в переменной. Проблема в том, что Node.text возвращает эту строку с этим странным символом. – Sebastian

+2

Это абсолютно важно, что вы с ним делаете, потому что мы не знаем, где вы видите этого персонажа. Если вы пытаетесь отобразить его где-нибудь, что не поддерживает символ * actual *, это объясняет проблему. Можете ли вы правильно прочитать XML-файл (включая проблемный символ) с других платформ, например. с .NET? –

ответ

1

Не совсем уверен, что здесь речь идет, как и @JonSkeetpoint's out вы не объяснили «где вы видите, что символ».

Имея это в виду, сделал быстрый тест в cscript.exe

Option Explicit 
Dim xml: Set xml = CreateObject("Msxml2.DOMDocument.6.0") 
Call xml.Load("test50.xml") 

Dim node: Set node = xml.selectSingleNode("//DriverLicenseCountry") 

WScript.Echo node.Text 

Мой тест использует Msxml2.DOMDocument.6.0, потому что моя система не имеет Msxml2.DOMDocument.4.0 установлен

И, как ожидается, получить следующий вывод

>cscript /nologo test50.vbs 
Australië 

Если вы используете это в среде сервера, такой как IIS с использованием классического ASP, то есть другие шаги, связанные с обеспечением правильной кодировки вашего вывода, но пока вы сказали, что используете это как автономный скрипт.

+0

У меня есть обновил вопрос с помощью кода, который я использую для чтения этого значения. Пожалуйста, взгляните и, может быть, вы что-то найдете там. Thx – Sebastian

+0

@Sebastian ничего очевидного я вижу, кроме вашей логики функций немного. Все еще жду, пока вы ответите [мой комментарий по вопросу] (http://stackoverflow.com/questions/38142080/encoding-of-special-characters-from-xml#comment63716328_38142080). – Lankymart

+0

Извините, моя ошибка, мы делаем глупость в этом коде. Мы берем xml из запроса с request.binaryread. Кажется, что это преобразование из двоичного чтения в строку вместо ë возвращает Ã, и я не могу понять, почему он это делает. В любом случае, спасибо за ваш ответ. – Sebastian

Смежные вопросы