Sen så vill jag klistra in html-kod i meddelandeHTML taggen, men det får ju inte vara taggar för då blir dom ju också xml-taggar.
Du får lägga in en CDATA-sektion i xml-filen.
Vad har du angett för encoding i din XML-fil?
19 svar · 1 350 visningar · startad av sailsoft
Jag lyckades kompilera PHP5 så den fattade xml men sen fick jag nya problem:
Min xml-fil ser ut så här:
</epostMeddelande>
<rubrik>Rubrik med å, ä och ö</rubrik>
<meddelandeText>Meddelande i vanlig text</meddelandeText>
<meddelandeHTML>Meddelandet i HTML</meddelandeHTML>
</epostMeddelande>
Rubriken kommer inte funka, den klagar på å, ä och ö. Sen så vill jag klistra in html-kod i meddelandeHTML taggen, men det får ju inte vara taggar för då blir dom ju också xml-taggar.
Hur ska man göra?
Sen så vill jag klistra in html-kod i meddelandeHTML taggen, men det får ju inte vara taggar för då blir dom ju också xml-taggar.
Du får lägga in en CDATA-sektion i xml-filen.
Vad har du angett för encoding i din XML-fil?
Jag har lagt till:
<?xml version="1.0" encoding="iso-8859-1" ?>
Hur menar du med CDATA, har du något exempel?
<epostMeddelande>
<rubrik>Rubrik med å, ä och ö</rubrik>
<meddelandeText>Meddelande i vanlig text</meddelandeText>
<meddelandeHTML>
<![CDATA[<br/><h1>rubriken eller nått</h1>]]>
</meddelandeHTML>
</epostMeddelande>
Jag antar att du inte har en slash först i det första elementet i ditt xml-exempel, f.ö.
mvh
Nej, jag klippte och klistrade en hel del :-)) Det blev lite fel...
Ok tack, men hur skall jag göra med å, ä och ö, samma sak som med html-kodning lr?
Ok tack, men hur skall jag göra med å, ä och ö, samma sak som med html-kodning lr?
Exakt vad för felmeddelande får du?
Jag tycker att det borde funka så länge man anger rätt encoding i xml-filen.
Dock skall tilläggas, att jag kan inte det minsta om php. =)
mvh
Det blir så här:
Rubrik:
Rubrik på epost
Meddelandet i HTML:
rubriken eller nått
Jag använder $objXml = simplexml_load_file($sokvagFil);
Jag funderar om det är den klassen som "misshandlar" icke-europeiska tecken :-))
Då har jag dessvärre inga idéer just nu, utan jag lämnar över till andra som vet något om php och inläsningen av filen.
Lycka till!
mvh
Tack ändå för hjälpen, det är gult värt att använda webforum :-))
Hej :)
Hur skapas xml-filen? Eller rättare sagt, har du någon kontroll över processen då den skapas? För isåfall kanske det vore en tanke att försöka få åäö till & aring; & auml; ö direkt?
En liten tanke bara :)
MVH Patrik
Jag skapar xml filen själv, men skriver jag & aring; så står det så i rubriken, jag undrar om probleme ligger i simplexml_load_file, det står ju att den är på försöksstadiet...
Hmm..
Om man skall gissa efter hur det brukar kunna vara med XML-tolkar, så kör de ofta med UTF-8 som intern encoding oavsett vad filer man petar in i dem har för encoding...
Vilket gör att man oavsett encoding på indatat ofta brukar få UTF-8-encoding på strängarna man läser ut från sina xml-tolkade datastrukturer...
Alltså oavsett om datat var kodat i t.ex. ISO-8859-1 eller i UTF-8 innan inläsningen...
Jag tycker alltså det ser ut som om det du "får ut" ut ditt objekt alltid verkar bli kodat i UTF-8... Vilket gör att du (om detta antagande stämmer) måste ange UTF-8 som teckenkodning på den webbsida som skall visa resultatet för att det skall fungera! (eller köra en konvertering från UTF-8 till t.ex. ISO-8859-1 på varje sträng du plockar ut ur XML-objektet om du hellre vill köra med ISO-8859-1 där)
Det borde alltså kunna bli bättre bara genom att du provar med att peta in en
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
i <head> på den PHP-sida du meckar med ;)
Nu använder jag iso-8859-1 som encoding, när jag kollar på datan på skärmen (skriver ut xml-filen med PHP) så står det:
Meddelande i HTML med å,ä,ö
Men om man väljer att visa källa så står det:
Meddelande i HTM med å,ä,ö
Problemet är att i mailet som man som skickar så står det Ã¥,ä,ö, fattar inte varför det visas som det gör...
Jaja men om du använder UTF-8 då du tittar på datat på skärmen då - blir det inte bra då ?
Det är liksom antagligen grundbulten i hela problemet som jag ser det
Vilken kodning skall jag använda då? Innehållet i xml-filen skall sedan e-postas...?
Hmm...
Nu skall vi se om jag förstår vad du egentligen försöker göra..
Jag antar att du gör såhär:
Du har en extern XML-fil kodad med ISO-8859-1
Du läser in den med $objXml = simplexml_load_file($sokvagFil);
Du plockar sedan ut strängar ur $objXml med hjälp av någon eller några av dess accessmetoder...
Det datat du plockat ut ur objektet (som "by default" antagligen alltid är UTF-8-kodat vad du än har haft för encoding på infilen) läggs antingen upp på din testsida eller i det e-mail du skapar via textsträngar...
Om det är så - så är nog det enklaste att du kör ISO-8859-1 som du är van överallt, och tar hjälp av t.ex. utf8-decode för att konvertera tecknen i varje sträng du "plockar ut" ur $objXml till ISO-8859-1 ...
:bire
Tack, utf8-decode löste problemet nu!
Stora tack, jag ska testa vidare och dyker det upp något så skriver jag ett nytt inlgg :-)
Keep 'em coming - det finns inga dumma frågor :e