webForumDet fria alternativet

encoding problem vidare

4 svar · 398 visningar · startad av mrblonde

mrblondeMedlem sedan aug. 20012 349 inlägg
#1

jag har en sträng som ser ut så här:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<MESSAGE MSGName="GetEShop" Component="PendingOrders">
   <PARAMS>
      <EShopID Value="dbEShopID"/>
   </PARAMS>
</MESSAGE>

Men när jag tar och gör loadxml så försvinner "encoding biten i huvet", dvs om man skriver ut obj.xml så blir det:

<?xml version="1.0" ?>
<MESSAGE MSGName="GetEShop" Component="PendingOrders">
   <PARAMS>
      <EShopID Value="dbEShopID"/>
   </PARAMS>
</MESSAGE>

Någon som vet vad det kan bero på?

Här är koden exakt hur jag gör:

    Dim sql As String, rsm As Adodb.Recordset
    Dim msg As Msxml2.DOMDocument30
    

    sql = "SELECT * FROM tblMessageTemplate"
    
    If IsNumeric(vTemplateId) Then
        sql = sql & " WHERE TemplateId = " & CLng(vTemplateId)
    Else
        sql = sql & " WHERE TemplateTitle = '" & vTemplateId & "'"
    End If

    Set rsm = GetRecordset(sql)
      
   Set msg = CreateObject("MSXML2.DOMDocument.3.0")
    
    msg.async = False
    msg.loadXML rsm("TemplateData")

Om jag läser av rsm("TemplateData") så innehåller den den strängen som jag visar överst.

och om jag läser av msg.xml så innhåller den samma minus encoding biten!!??

Någon idé?

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

mrblondeMedlem sedan aug. 20012 349 inlägg
#2

notera att jag även provat med Spins metod

'test att stoppa in encoding...
   Dim objPI As MSXML2.IXMLDOMProcessingInstruction
   Set objPI = msg.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
   msg.insertBefore objPI, msg.childNodes(0)

   Set objPI = Nothing

Men resultatet blir fortfarande att encoding="ISO-8859-1" biten inte finns med i huvet :(

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

SPiNMedlem sedan mars 20007 896 inlägg
#3

Händer samma sak om du använder .load(rsm("TemplateData"))?

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

mrblondeMedlem sedan aug. 20012 349 inlägg
#4

har kommit fram till att den faktistk får rätt encoding, men ajg kunde inte se det, för när jag gör testutskrifter med debug.print msg.xml så kan den bars skriva ut med utf-16 vilket gör att den tar bort min encoding bit och så...

så den laddade faktiskt in rätt.

Problemet nu blev att få ut xml:en som en string, jag blev tvungen att göra msg.save och spara ner det som en txt fil på disk och sen läsa upp den i en string variabel med ett file.readall. Då får jag en korrekt sträng. Suck.

Nästa idiotgrej verkar bli att ta emot det svar jag får på min postning. JAg postar alltså min string med en objHTTP.Send myStringWithXML

När jag sedna läser av objHTTP.ResponseText kan den bara skriva ut i utf-8 och någon mer märlig standard :)

Så jag tänkte ok, då laddar jag in det med objHTTP.responseXML, men jag lyckas inte göra varken msg.load eller msg.loadxml, då ser jag att man kan göra msg.loadxml objHTTP.responseXML.xml

problemet är bara att metoden .xml bara returnerar i utf-16 format... tillbaka till rutan ett.

Det är fanimig helt otroligt!!!

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

mrblondeMedlem sedan aug. 20012 349 inlägg
#5

vad som är märkligt är att:
objHHTP.ResponseText innehåller rätt svar, men med fel encoding vilket gör att åäö blir fel oc det inte går att ladda.

Kom på att man kunde göra:
objHTTP.ResponseXML.Save("c:\temp.xml")
vilket funkar utmärkt, om det inte vore för det att ResponseXML inte innehåller någonting, den är tom! Fast att det finns text i responseText propertien...

När jag debuggar blir det:
Description: XML document must have a top level element.
Line: 0
ErrCode: -1072896680

Idéer någon ? :q

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)