Hej.. Og så det samme evindelige problem.. XML og encodning..
Jeg får tit XML filer der i deres declaration har en en eks. encodning UTF-8. men filen er gemt som dos.... når jeg så loader XML filen er den loaded i dos. og ikke i den encoding der står i declaration'en, så de danske bogstaver går tabt.
Er der en måde jeg kan læse XmlDeclarationen fra en xml og loade XmlDocument'et med encodingen fra denne..
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Er ikke så meget inde i det, men jeg bruger en anden fremgangsmåde, når der går ged i mine xml filer.
Jeg tager en xml fil der virker - altså hvor encodingen og xmltexten passer - og copy paster den ødelagte xml fil's text over i en kopi af den - skod løsning men det virker
Synes godt om
Slettet bruger
05. oktober 2005 - 13:50#2
Det er jo dybest set sådan at hvis nogen sender dig en XML file gemt i ISO-8859-1 og angiver UTF-8 i deklarationen så sender de dig noget forkert. Du kan selvfølgelig forsøge at omgå dette men tage dog hånd om det grundlæggende problem og fortæl de der sender dig noget forkert at det ikke kan bruges fordi de laver filerne forkert. Hvis de sender filer i ISO-8859-1 så kan de vel bare angive det i deklaration.
Hvis dine XML filer der er gemt i UTF8 er gemt med byte ordering mark (eller UTF-8signature, som Visual Studio kalder det når man gemmer en fil), kan du kigge efter det. Hvis det findes, er det en UTF8 fil, hvis ikke kan du prøve at behandle den som ISO-8859-1
Byte ordering mark ligger i de 2 første bytes og har værdien 0xFEFF. Hvis dine UTF8 filer er gemt uden dette mærke, kan metoden dog ikke bruges. Så start med at checke med nogle af dine eksisterende UTF8 filer, om mærket er til stede.
læs hele filen, lav en analyse af filens indhold og lav et kvalificeret gæt på tegnsæt, konverter filen fra dette tegnsæt tilde angivne i xml headeren (UTF-8) og kør så normalt
1) Determine the number of octets required from the character value and the first column of the table above. It is important to note that the rows of the table are mutually exclusive, i.e. there is only one valid way to encode a given UCS-4 character.
2) Prepare the high-order bits of the octets as per the second column of the table.
3) Fill in the bits marked x from the bits of the character value, starting from the lower-order bits of the character value and putting them first in the last octet of the sequence, then the next to last, etc. until all x bits are filled in.
The algorithm for encoding UCS-2 (or Unicode) to UTF-8 can be obtained from the above, in principle, by simply extending each UCS-2 character with two zero-valued octets. However, pairs of UCS-2 values between D800 and DFFF (surrogate pairs in Unicode parlance), being actually UCS-4 characters transformed through UTF-16, need special treatment: the UTF-16 transformation must be undone, yielding a UCS-4 character that is then transformed as above.
Decoding from UTF-8 to UCS-4 proceeds as follows:
1) Initialize the 4 octets of the UCS-4 character with all bits set to 0.
2) Determine which bits encode the character value from the number of octets in the sequence and the second column of the table above (the bits marked x).
3) Distribute the bits from the sequence to the UCS-4 character, first the lower-order bits from the last octet of the sequence and proceeding to the left until no x bits are left.
If the UTF-8 sequence is no more than three octets long, decoding can proceed directly to UCS-2.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.