Nej... tror inte det. Det enda HTMLEncode gör är ju att den ersätter < > och andra specialtecken med en motsvarighet så att webbläsaren skriver ut dem istället för att hantera dessa som (X)HTML kommandon. Jag skrev kanske lite fel först. Det är en RSS jag håller på att göra och i RSS-valideringen står det: Nej, säg att du vill visa följande tecken som ren text: Ah, givetvis. Nu löste jag det genom att helt enkelt strippa bort all HTML från det fältet, eftersom det inte behövdes där. Nu hängde jag inte riktigt med det, men HtmlDecode borde fungera (om det nu finns i asp, är inte 100% på det, vet att det finns i asp.net dock..) Nej, nu missförstod du mig. Det jag menade var, om jag vill lägga tillbaka den HTML-koden jag hade tidigare i descriptionfältet, hur ska jag göra om den till korrekt XML? Hmm. Men en Server.HTMLEncode har jag kört redan. Eller menar du att jag ska köra den en gång till? Jag tror nog att du bara behover köra den en enda gång för att ersätta alla otillåtna tecken innan du sparar ner det i XML filen. Nja, en gång körde jag förut och då fick jag det där meddelandet. Och jag tolkar det då som att man ska göra det till HTML och sen HTML-koden till XML? Typ; Förresten, escapa texten, är det att köra Server.HTMLEncode? På ren text kör du två gånger eftersom att texten då inte är html (t.ex. om det finns <, > eller & i texten så kommer de behandlas på fel sätt.) När det är korrekt html så är andra gången för att se till att html-koden blir en korrekt xml-sträng. Har du korrekt html från början så behövs bara andra steget.Sv: Server.XHTMLEncode?
Men varför skulle du vilja ha det? Vilken funktion hos HTMLEncode saknar du? *nyfiken*Sv: Server.XHTMLEncode?
<code>
Response.Write Server.HTMLEncode("<img src="""" />")
Response.Write "<img src="""" />"
</code>
Skilldnaden blir ju helt enkelt i exemplet ovan att först skrivs taggen ut som text och andra raden skriver ut taggen som ett kommando.Sv:Server.XHTMLEncode?
<info>For elements intended to be rendered as HTML, like RSS description, make sure that all plain text content is escaped first as HTML and then again as XML.</info>
Betyder det där att jag ska göra om det till HTML först, och sen XML, vilket borde bli XHTML?
ThomasSv: Server.XHTMLEncode?
<>
Du måste först escapa dem som giltig html:
<>
Nu måste du escapa dem till giltig xml:
&lt;&gt;
Så förstod jag iaf. beskrivningen. Tydligare exempel blir det om du vill visa html, du ser att du måste escapa html-koden till giltig xml (dock inte till html eftersom att det redan är html)Sv:Server.XHTMLEncode?
Men om jag nu vill ha tillbaka HTML-koden där, hur ska jag få den till XML?
ThomasSv: Server.XHTMLEncode?
Sv:Server.XHTMLEncode?
ThomasSv:Server.XHTMLEncode?
ThomasSv: Server.XHTMLEncode?
Eftersom XML också använder sig av taggar måste man ersätta dessa tecken med något annat, och det är ju det HTMLEncode gör.Sv:Server.XHTMLEncode?
ThomasSv:Server.XHTMLEncode?
>>
For elements intended to be rendered as HTML, like RSS description, make sure that all plain text content is escaped first as HTML and then again as XML
<<
Ungefär: Se till att all vanlig text escapas till html och sedan igen till xml. Dvs. om du har ren text du vill visa så måste du först göra om den till korrekt html, dvs. escapa hela _texten_. När du har korrekt html så måste du göra om den till korrekt xml, dvs. escapa hela _html-koden_.
Om du redan har korrekt html-kod så behöver du ju inte göra om den till html först, det blir bara knäppt, användaren kommer då se din html-kod med taggar och allt istället för en snygg sida. Du behöver då bara se till att göra om till xml, dvs. Server.HtmlEncode()Sv: Server.XHTMLEncode?
I så fall förstår jag inte riktigt... om man ska göra om den till HTML (escapa) så kör man Server.HTMLEncode.
Om man redan har korrekt HTML-kod så behöver man inte göra det, då räcker det med att köra Server.HTMLEncode.
Det blir väl samma sak? Eller kör man Server.HTMLEncode två gånger i första fallet?
ThomasSv:Server.XHTMLEncode?