webForumDet fria alternativet

Å, ä, ö i och html-kod i en xml fil som jag läser in från PHP?

PHP

19 svar · 1 350 visningar · startad av sailsoft

Medlem sedan juli 2001225 inlägg
Frågan#1

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?

Medlem sedan juni 200032 967 inlägg
#2

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?

Medlem sedan juli 2001225 inlägg
#3

Jag har lagt till:

<?xml version="1.0" encoding="iso-8859-1" ?>

Hur menar du med CDATA, har du något exempel?

Medlem sedan juni 200032 967 inlägg
#4
<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

Medlem sedan juli 2001225 inlägg
#5

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?

Medlem sedan juni 200032 967 inlägg
#6

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

Medlem sedan juli 2001225 inlägg
#7

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 :-))

Medlem sedan juni 200032 967 inlägg
#8

Prova med UTF-8 som encoding istället.

mvh

Medlem sedan juli 2001225 inlägg
#9

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

Meddelande i HTM med å, ä, öL

Funka lika dåligt...

Medlem sedan juni 200032 967 inlägg
#10

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

Medlem sedan juli 2001225 inlägg
#11

Tack ändå för hjälpen, det är gult värt att använda webforum :-))

Medlem sedan okt. 2001538 inlägg
#12

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

Medlem sedan juli 2001225 inlägg
#13

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...

Medlem sedan juli 20013 378 inlägg
#14

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 ;)

Medlem sedan juli 2001225 inlägg
#15

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...

Medlem sedan juli 20013 378 inlägg
#16

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

Medlem sedan juli 2001225 inlägg
#17

Vilken kodning skall jag använda då? Innehållet i xml-filen skall sedan e-postas...?

Medlem sedan juli 20013 378 inlägg
#18

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:

  1. Du har en extern XML-fil kodad med ISO-8859-1

  2. Du läser in den med $objXml = simplexml_load_file($sokvagFil);

  3. Du plockar sedan ut strängar ur $objXml med hjälp av någon eller några av dess accessmetoder...

  4. 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

Medlem sedan juli 2001225 inlägg
#19

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 :-)

Medlem sedan juli 20013 378 inlägg
#20

Keep 'em coming - det finns inga dumma frågor :e

278 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)