Permalänk
Medlem

Problem med XML encoding

Hallå!

Skapar ett XML dokument med encoding <?xml version="1.0" encoding="ISO-8859-1"?>

Även fast jag har det får jag fel på "é" som blir "é"

Sätter jag manuellt encoding på dokumentet med western (ISO Latin 1) (i coda för mac) visas det rätt

Rktigt märkligt :S

EDIT: Jag hittade att man kunde köra med <?xml version="1.0" encoding="utf-8" ?>, nu fungerar det

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem
Skrivet av flashen:

EDIT: Jag hittade att man kunde köra med <?xml version="1.0" encoding="utf-8" ?>, nu fungerar det

Det är inte märkligt, det beror på hur du sparar filen.

Tänk; en fil består av ett gäng ettor och nollor. Dessa grupperas vanligtvis i bytes, med åtta bitar per byte.
UTF-8 är ett så kallat multibyte-format. Detta innebär att vissa tecken (t ex de svenska) tar upp mer än en byte. I ISO-8859-1 tar varje tecken upp precis en byte, men teckenomfånget – antal tecken som kan representeras – är begränsat till samma antal bitar.

Ditt dokuments första rad säger att innehållet i filen är i en viss encoding. När den är satt till ISO-8859-1 och läses av ett externt program som respekterar encoding-attributet, läses varje byte i dokumentet till ett tecken, men du har sparat filen i ett multibyte-format. Troligtvis är UTF-8 standard i den texteditor du använder.

Ett tydligt bevis på detta är tecknet "é", som inte ingår i den normala teckenuppsättningen. När filen läses som ISO-8859-1 finns det två (eller flera) bytes i "é"-s position, där den ena byten blir "Ã" och den andra "©".
När du ändrade encoding till UTF-8 säger du att ett tecken kan ta upp mer än en byte, vilket stämmer överens med hur du har sparat filen. Det är därför det började fungera.

Encoding leder ofta till förvirring, men det finns en enkel tumregel: Om du inte har en kravspec som säger att text ska ta så lite utrymme som möjligt så använd UTF-8.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Det är inte märkligt, det beror på hur du sparar filen.

Tänk; en fil består av ett gäng ettor och nollor. Dessa grupperas vanligtvis i bytes, med åtta bitar per byte.
UTF-8 är ett så kallat multibyte-format. Detta innebär att vissa tecken (t ex de svenska) tar upp mer än en byte. I ISO-8859-1 tar varje tecken upp precis en byte, men teckenomfånget – antal tecken som kan representeras – är begränsat till samma antal bitar.

Ditt dokuments första rad säger att innehållet i filen är i en viss encoding. När den är satt till ISO-8859-1 och läses av ett externt program som respekterar encoding-attributet, läses varje byte i dokumentet till ett tecken, men du har sparat filen i ett multibyte-format. Troligtvis är UTF-8 standard i den texteditor du använder.

Ett tydligt bevis på detta är tecknet "é", som inte ingår i den normala teckenuppsättningen. När filen läses som ISO-8859-1 finns det två (eller flera) bytes i "é"-s position, där den ena byten blir "Ã" och den andra "©".
När du ändrade encoding till UTF-8 säger du att ett tecken kan ta upp mer än en byte, vilket stämmer överens med hur du har sparat filen. Det är därför det började fungera.

Encoding leder ofta till förvirring, men det finns en enkel tumregel: Om du inte har en kravspec som säger att text ska ta så lite utrymme som möjligt så använd UTF-8.

Mycket intressant, tack för svaret

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes