4 Stimmen

HTMLencode HTMLdecode

Ich habe einen Textbereich und möchte den vom Benutzer eingegebenen Text in der Datenbank mit HTML-Formatierung wie Absatzumbruch und nummerierter Liste speichern. Ich verwende dafür HTMLencode und HTMLdecode.

Ein Beispiel für meinen Code sieht folgendermaßen aus:

string str1 = Server.HtmlEncode(TextBox1.Text);
Response.Write(Server.HtmlDecode(str1));

Wenn der Benutzer einen Text mit 2 Absätzen eingegeben hat, zeigt str1 Zeichen an \r\n\r\n zwischen den Absätzen. Aber wenn es auf den Bildschirm geschrieben wird, wird der zweite Absatz einfach an den ersten angehängt. Warum werden beim Dekodieren nicht 2 Absätze gedruckt?

12voto

Kelsey Punkte 46346

Die einfachste Lösung wäre, dies zu tun:

string str1 = Server.HtmlEncode(TextBox1.Text).Replace("\r\n", "<br />");

Dabei wird davon ausgegangen, dass es Ihnen nur darum geht, die richtigen <br /> Tags an Ort und Stelle. Wenn Sie einen echten Formatierer wünschen, benötigen Sie eine Bibliothek, wie sie Aaronaught vorgeschlagen hat.

3voto

Aaronaught Punkte 118136

Das ist nicht das, was HtmlEncode y HtmlDecode tun. Nicht einmal annähernd.

Diese Methoden dienen dem "Escaping" von HTML. < wird &lt; , > wird &gt; , und so weiter. Sie verwenden diese, um Benutzereingaben zu umgehen, um Cross-Site-Scripting-Angriffe und ähnliche Probleme zu vermeiden.

Wenn Sie in der Lage sein wollen, reine Texteingaben in HTML umzuwandeln, sollten Sie ein Formatierungswerkzeug wie Markdown (Ich glaube, dass Stack Overflow die MarkdownSharp ).

Wenn Sie nur Zeilenumbrüche wünschen, können Sie text.Replace("\r\n", "<br/>") Der Umgang mit komplexeren Strukturen wie geordneten Listen ist jedoch schwierig, und es gibt bereits Werkzeuge, die diese Aufgabe übernehmen.

0voto

jvenema Punkte 43201

HTML erkennt nicht \r\n als Zeilenumbruch. Wandeln Sie sie in "p"- oder "br"-Tags um.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X