Links encoden

14/06/2009 - 14:22 von Lutz Elßner | Report spam
Wenn ich mit dem Repeater aus der Datenbank Links erzeuge, muss ich
ja aus den Texten mindestens die 3 Zeichen < & " codieren.

Ist das Korrekt? Soll also HtmlAttributeEncode verwendet werden?

Oder soll HtmlEncode verwendet werden, was auch noch
so was umwandelt: Normalit&#228;t

Dann gibt es noch UrlEncode oder Handarbeit.

Im XHTML ist ja verschiedenes erlaubt. UTF-8 wird auch verwendet.
Welche Codierung ist für Suchmaschinen und Browser (auch in Handys) am besten?

a) für den Link in href="###"

b) für den angezeigten Text <a>###</a>

Lutz
 

Lesen sie die antworten

#1 Christoph Schneegans
14/06/2009 - 15:27 | Warnen spam
Lutz Elßner schrieb:

Wenn ich mit dem Repeater aus der Datenbank Links erzeuge, muss
ich ja aus den Texten mindestens die 3 Zeichen < & " codieren.



Richtig.

Oder soll HtmlEncode verwendet werden, was auch noch so was
umwandelt: Normalit&#228;t



Die HtmlEncode-Methode ist ziemlich unbrauchbar, vgl.
<http://schneegans.de/asp.net/htmlsp...hars/>. Sie maskiert 'à',
faßt aber 'α' nicht an. Sowohl HtmlEncode() als auch
HtmlAttributeEncode() versàumen die Maskierung von ', so daß man
Gefahr làuft, fehlerhaften Code wie title=''' zu erzeugen.

Dann gibt es noch UrlEncode oder Handarbeit.



UrlEncode ist etwas völlig anderes.

Welche Codierung ist für Suchmaschinen und Browser (auch in
Handys) am besten?



Browser unterstützen UTF-8 seit über zehn Jahren, Suchmaschinen tun
es ebenfalls. Ich habe auch schon lange auch kein Handy mehr
gesehen, das UTF-8 nicht unterstützt. Du willst in XHTML ehrlich
nichts anderes verwenden. Es gibt damit überhaupt keine
Notwendigkeit, Nicht-ASCII-Zeichen zu maskieren.

Wenn du etwa eine Seite Windows-1252-codiert auslieferst, schickt
ein Browser Formulareingaben auch Windows-1252-codiert zurück.
Unicode-Zeichen wie 'α' können damit aber nicht roh codiert werden,
und dann wird es richtig eklig. Mit UTF-8 vermeidet man dieses
Problem, denn UTF-8 kann bekanntlich *alle* Unicode-Zeichen
codieren.

a) für den Link in href="###"



URLs dürfen insbesondere keine Nicht-ASCII-Zeichen enthalten. Wie
sieht denn die Eingabe aus? Wenn du URLs etwa als
'http://www.example.org/à/?fo...bar=ü' speicherst, also *mit*
Nicht-ASCII-Zeichen, ist System.Web.HttpUtility.UrlPathEncode() die
richtige Methode, denn sie faßt Zeichen wie / & ? nicht an, vgl.
<http://schneegans.de/asp.net/url-escape/>.

Danach weiter mit b), die %HH-maskierte URL muß nun noch HTML-
maskiert werden. Viele Leuten glauben immer noch, '&' sollte in URLs
nicht als '&amp;' maskiert werden. Das ist aber Blödsinn.

b) für den angezeigten Text <a>###</a>



HtmlSpecialChars(), fertig.

<http://schneegans.de/expression-web/codierung/> · Unicode in xWeb

Ähnliche fragen