Richtextbox Zeichensatz Probleme mit Umlauten bei Speicherung in Datenbank

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von Eierlein.

    Jojo0405 schrieb:

    ändern
    Die wird von einem Konsortium vorgegeben. :rolleyes:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Jojo0405 schrieb:

    oder
    Du beschreibst zunächst sehr präzise, was Du eigentlich vor hast.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Eierlein: Nur wird es mir bei er Abholung der Daten in die RTB nicht korrekt dargestellt.
    @RodFromGermany: Ich möchte in der Richtextbox den Text formatieren. D.h. Fett markieren, kursiv, Schriftart anpassen etc. Danach soll der Text in einer Datenbank gespeichert werden und wieder ausgelesen werden können um ihn später weiterzubearbeiten.

    Jojo0405 schrieb:

    den Text
    bekommst Du woher?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    wir warten immer noch auf eine eindeutige Beschreibung, was du machen willst.

    Jojo0405 schrieb:

    Ich möchte in der Richtextbox den Text formatieren. D.h. Fett markieren, kursiv, Schriftart anpassen etc. Danach soll der Text in einer Datenbank gespeichert werden und wieder ausgelesen werden können um ihn später weiterzubearbeiten.
    Welchen Text willst du weiter bearbeiten?
    Den Richtext oder den unformatierten Text?
    Was bedeutet weiterbearbeiten? willst du ihn nur auslesen, oder auch geändert zurückspeichern können?
    Jou.
    Ich hab auch das Gefühl, dass ein RichText als Text behandelt wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Eierlein: Wenn ich den Text als Text in die Datenbank speichere und auslese, wird die Formatierung nicht mit gespeichert.

    Ich habe eine Richtextbox für die Beschreibung eines Problems. Diese Beschreibung möchte ich formatieren und den Text samt Formatierung in die DB speichern um ihn mir später Samt Formatierung wieder in der selbigen Richtextbox anzeigen und weiter ergänzen und formatieren zu können. Alles klappt soweit auch ganz gut bis auf dieses Umlaut-Problem. Ich hoffe es ist jetzt einigermaßen klar geworden was ich vorhabe.

    Jojo0405 schrieb:

    Umlaut-Problem
    glaub ich nicht.
    Ich gehe davon aus, wenn du Richtextbox.Rtf abspeicherst als String, und später denselben String einer anderen Richtextbox an .Rtf zuweist, dann zeigt die's identisch an.

    Aber ich kann mich irren - kannst du vlt. eine Sample-Anwendung machen, die dieses komische Verhalten reproduziert? Muss ja garkeine DB dranhängen - nur ein Window mit 2 Rtbs, und von der einen schubst man das Rtf in die andere.
    Jo, da ist dann iwas falsch konfiguriert, wenn Strings nicht exakt genauso aus der DB herauskommen, wie man sie reinschreibt.

    Prinzipiell ist das Encoding egal, solange man beim reinschreiben denselben verwendet wie beim Auslesen.
    Und es ist übrigens nicht der Zeichensatz ( = Font ), sondern es ist das Encoding.
    @Eierlein: Wenn ich den Text als Text in die Datenbank speichere und auslese, wird die Formatierung nicht mit gespeichert.


    1. Den Text als RTF-Text in der Datenbank speichern.
    2. Zum Testen, den Text als TXT aus den Datenbank lesen.
    3. Kontrollieren ob, z. B. Müller noch als M\'fcller angezeigt wird.

    Und: Encoding sollte Default sein. UTF8 ergibt zwar das gleiche Ergebnis, allerdings könnte dann der automatisch erzeugte UTF8-BOM () stören.
    Leider werden die Umlaute immernoch nicht korrekt dargestellt


    Wie sollten sie auch, da der Fehler noch nicht ermittelt wurde.
    Stimmen die Textformatierungen noch?

    Laut deinem Testprogramm wird ein richtiger RTF-String erstellt.
    Diesen RTF-String speicherst du in der Datenbank.
    Jetzt liest du den String aus der Datenbank und die Umlaute werden falsch dargestellt.
    Um zu testen, ob der String falsch aus der Datenbank kommt, sollst du den String als Text anzeigen lassen.
    Oder aus den Datenbank in eine Datei schreiben und die Datei mit einem Texteditor ansehen.

    die DB auf UTF8 gesetzt. Leider werden die Umlaute immernoch nicht korrekt dargestellt


    Spielt keine Rolle, da RTF nur den Ascii-Zeichensatz (keine Zeichen > 127) verwendet!
    Deswegen wird ü (Zeichen 252) als \'fc (Zeichen 92,39,102,99) kodiert.
    Also: Beim speichern der RTF-Strings Encoding.Default oder Encoding-Ascii verwenden.

    Normale Textstrings müssen selbstverständlich mit Encoding.UTF8 gespeichert werden. (Wenn die Datenbank auf UTF8 steht).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eierlein“ ()

    Ich glaube ich habe eine Idee woran es noch liegen könnte.
    später im Quelltext habe ich die einfachen Gänsefüsschen also ' durch doppelte " ersetzt da es sonst immer probleme beim speichern in der DB gab.
    Das ist der einzige Unterschied den ich zu meinem Funktionierenden Beispiel erkennen kann.
    Könnte es daran evtl liegen?

    Edit:
    Es liegt daran! Habe in der DB das " durch ein ' ersetzt und siehe da! Es wird mir korrekt dargestellt.
    Nun muss ich nur noch das Problem mit dem Token unknown lösen...