Avatar billede ameq Nybegynder
04. maj 2005 - 12:12 Der er 23 kommentarer og
1 løsning

Ændre encoding i min xml fil

Hej
Jeg har fået lavet mit en asp.net side hvor den udskriver

<?xml version="1.0" encoding="utf-16"?>
<Rss Version="1.00">
  <Nyhed Id="1">
    <Overskrift>Første nyhed</Overskrift>
    <Dato>25-01-2005 18:34:31</Dato>
    <Tekst>Nu oppe til beta testing</Tekst>
  </Nyhed>
</Rss>

og det viker fint fint, ud over at IE brokker sig over encoding, hvis jeg henter xmlen og selv ændre encoding tili utf-8 så virker filen helt fint også i IE.

Men hvordan ændre jeg så denne her encoding i min asp.net?

Min Page-load:

Nyhed_Manager _nm = new Nyhed_Manager();
           

            System.IO.StringWriter _string = new System.IO.StringWriter();

            XmlTextWriter _xmlwriter = new XmlTextWriter(_string);   
           
            _xmlwriter.WriteStartDocument();
            _xmlwriter.Formatting = Formatting.None;

                _xmlwriter.WriteStartElement("Rss");
                _xmlwriter.WriteAttributeString("Version","1.00");
                foreach(Turnering.Nyheder.Nyhed _nyhed in _nm.Hent_Alle())
                {   
                    _xmlwriter.WriteStartElement("Nyhed");
                    _xmlwriter.WriteAttributeString("Id",_nyhed.Id.ToString());
                    _xmlwriter.WriteElementString("Overskrift",_nyhed.Overskrift);
                    _xmlwriter.WriteElementString("Dato",_nyhed.Oprettelses_Dato.ToString());
                    _xmlwriter.WriteElementString("Tekst",_nyhed.Tekst);
                    _xmlwriter.WriteEndElement();
                }
                _xmlwriter.WriteEndElement();
            _xmlwriter.WriteEndDocument();
           
           
            Response.ContentType = "text/xml";
            Response.Write(_string.ToString());
Avatar billede arne_v Ekspert
04. maj 2005 - 12:18 #1
Hvad med:

_xmlwriter.WriteAttributeString("Encoding","UTF-8");

?

(jeg har ikke testet men det lyder da logisk)
Avatar billede arne_v Ekspert
04. maj 2005 - 12:19 #2
Jeg kiggede lige i noget kode.

prøv:

XmlTextWriter _xmlwriter = new XmlTextWriter(_string, "UTF-8");
Avatar billede ameq Nybegynder
04. maj 2005 - 12:23 #3
det sidste du skriv blever så til
[C#]
public XmlTextWriter(
  string filename,
  Encoding encoding
);

og det virker ik =(
Avatar billede ameq Nybegynder
04. maj 2005 - 12:26 #4
hvor vil du havde den attributestring?
lige efter _xmlwriter.WriteStartDocument();?
Avatar billede arne_v Ekspert
04. maj 2005 - 12:39 #5
i forbindelse med en WriteProcessingInstruction vil jeg tro
Avatar billede arne_v Ekspert
04. maj 2005 - 12:43 #6
men XmlTextWriter(_string, "UTF-8") lyder altså som det rigtige - jeg lavede
lige et test eksempel hos mig - og det virkede fint - hvad sker der hos dig ?
Avatar billede arne_v Ekspert
04. maj 2005 - 12:47 #7
og jeg kan ikke få WriteAttributeString til at virke - WriteStartDocument skal være
før end eventuel WriteProcessingInstruction - og WriteStartDocument & WriteAttributeString
giver også fejl
Avatar billede ameq Nybegynder
04. maj 2005 - 13:01 #8
The best overloaded method match for 'System.Xml.XmlTextWriter.XmlTextWriter(System.IO.Stream, System.Text.Encoding)' has some invalid arguments

XmlTextWriter _xmlwriter = new XmlTextWriter(_string, "UTF-8");
Avatar billede ameq Nybegynder
04. maj 2005 - 13:20 #9
for det er jo en StringWriter jeg bruger og ikke en Stream

Fra min kode:
System.IO.StringWriter _string = new System.IO.StringWriter();
Avatar billede arne_v Ekspert
04. maj 2005 - 14:14 #10
Kan du bruge:

_string.Encoding = Encoding.UTF8;

?
Avatar billede arne_v Ekspert
04. maj 2005 - 14:15 #11
Fra docs:

Property Value
The Encoding in which the output is written.

Remarks
This property is necessary for some XML scenarios where a header must be written containing the encoding used by the StringWriter. This allows the XML code to consume an arbitrary StringWriter and generate the correct XML header.
Avatar billede ameq Nybegynder
04. maj 2005 - 14:22 #12
jamen det er jo kun en get egenskab hvordan skulle jeg kunne sætte den?
Avatar billede arne_v Ekspert
04. maj 2005 - 14:40 #13
suk

jeg har ikke meget held med mine ideer
Avatar billede arne_v Ekspert
04. maj 2005 - 14:43 #14
en String er jo naturligvis i UTF-16
Avatar billede arne_v Ekspert
04. maj 2005 - 14:44 #15
og _string.ToString().Replace("utf-16","utf-8") ser jo ikke for prof ud.
Avatar billede ameq Nybegynder
04. maj 2005 - 14:45 #16
nej og? he he jeg prøver
Avatar billede ameq Nybegynder
04. maj 2005 - 14:47 #17
=) det virker nu, tak for det =)
Avatar billede ameq Nybegynder
04. maj 2005 - 15:08 #18
kommer du med et svar?
Avatar billede arne_v Ekspert
04. maj 2005 - 15:14 #19
Det kan jeg godt.

Men jeg er ikke selv tilfreds med løsningen.
Avatar billede ameq Nybegynder
06. maj 2005 - 08:16 #20
okey? jamen hvad ville du jo havde gjort?
Avatar billede arne_v Ekspert
07. maj 2005 - 20:12 #21
jeg har ikke fundet en bedre løsning men jeg tror at en bedre løsning eksisterer
Avatar billede ameq Nybegynder
08. maj 2005 - 11:49 #22
måske
Avatar billede arne_v Ekspert
28. maj 2005 - 16:56 #23
jeg er ikke kommet i tanke om en bedre ide
Avatar billede ameq Nybegynder
29. maj 2005 - 10:12 #24
lyder godt =), kommer du med det? =)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester