Problem mit Umlaut

mcpd

Grünschnabel
Hallo Leute,

ich habe eine ASP.NET Web-Applikation geschrieben, die Daten aus einer MS-SQL Server 2005 Datenbank in einem GridView-Control darstellt. Alles soweit o.k. Doch nun möchte ich einen Datensatz aus dem GridView in TextBox-Controls anzeigen lassen und bemerke, dass alle Datenätze mit einem Umlaut nicht angezeigt werden. Bei einem DEBUG-Vorgang werden diese Umlaute durch irgendwelche Zeichen dargestellt. Woran kann das liegen? Ich habe was gelesen über UTF-8 Codierung. Wo muss ich diese Codierung anwenden?

Danke für Eure schnelle Hilfe

mfg
 
Hallo Leute,

das Problem konnte ich nun endlich selber lösen. Ich muss den Wert
aus der Zelle einer GridView mit der Methode "Server.HtmlDecode()"
auslesen und den Wert als Parameter übergeben. Dann klappt alles.

Gruss
mcpd:)
 
Meiner Meinung nach ist das aber keine schöne Lösung. Du scheinst die Daten schon vorm Schreiben in die Datenbank mit HtmlEncode() o.Ä. zu behandeln. Dadurch werden alle Sonderzeichen durch eine andere Darstellung ersetzt (z.B. ü=&#252 ; ). In deinem GridView werden sie wieder korrekt dargestellt, da der Browser &#252 ; als ü rendert. In der TextBox werden die Zeichen so dargestellt, wie sie sind.
Je nachdem um was für Daten es sich handelt, ist das natürlich nicht schlimm. Aber wenn du beispielsweise einen Foreneintrag kodiert in der Datenbank ablegst, kannst du eine Textsuche nach Umlauten vergessen, es sei denn du kodierst den Suchbegriff entsprechend.
Da aber die Datenbank UTF-8 fähig ist und die Browser es auch sind, ist es schöner die Daten im Original zu speichern. Kodieren sollte man nur solche zeichen, welche zu Fehler führen können oder Angriffsfläche für XSS bieten (&,<,>,',").

Ich hoffe der Beitrag hilft dir auch beim Verständnis weiter.
 
Zuletzt bearbeitet:
Hallo CPoly,

das stimmt nicht ganz. Denn das Schreiben meiner Daten in die Datenbank
erfolgt ohne "Server.HtmlEncode()". Das war das Kuriose an dieser Situation.

mcpd
 
Achso, dann hab ich das nicht richtig gelesen. Ich dachte du schreibst Daten aus der DB in eine TexBox und in ein GridView. Aber du tust deine TextBox mit Daten aus dem GridView-control füllen. Microsoft nutzt ungefragt HtmlEncode() im GridView. Du kannst das Feldweise mit HtmlEncode="False" abstellen.
 
Hallo CPoly,

danke für Deine Info. Die Eigenschaft werde ich mir für das nächste Projekt
gut merken.


mcpd
 
Zurück