![]() |
Problem mit GeSHi und dem großen "Ü"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe bei der Verwendung von ![]() ![]() Bis zu dieser Zeile stimmt alles, doch diese verursacht das Problem:
Code:
Ohne utf8_encode() werden die Umlaute alle falsch dargestellt. Da nützt auch ein
return utf8_encode($geshi->parse_code($source, $code_lang));
Code:
nichts.
$geshi->set_encoding('UTF-8');
Habt ihr eine Idee, was die Ursache für das Problem sein könnte? Ein schönes Wochenende wünscht Matze |
Re: Problem mit GeSHi und dem großen "Ü"
Hallo Matthias,
für mich gibt es da nur eine Erklärung: Du hast die Datei nicht in einem Rutsch geschrieben und mittendrin den Editor gewechselt. Dabei ist eine falsche Kodierung für das Ü verbaut worden, die beim nächsten Speichern mit einem UTF-8 Editor durch die Sequenz "EF BF BD C2 9C" als Marker für Nonsense ersetzt wurde. Du solltest die beiden Marker-Zeichen löschen und mit einem Editor deines Vertrauens das gewünschte Ü eintragen. Freundliche Grüße |
Re: Problem mit GeSHi und dem großen "Ü"
Hallo Achim,
seltsam ist jedoch, dass es in der Datenbank korrekt eingetragen ist. Mit PhpMyAdmin beispielsweise sehe ich das "Ü" richtig und wenn ich es damit entferne, neu einfüge und eintragen lasse, sehe ich weiterhin dieses ungewollte Zeichen. Grüße |
Re: Problem mit GeSHi und dem großen "Ü"
Hast du es mit einem Hex-Editor überprüft?
Das große Ü müsste als C3 9C kodiert sein. Kannst du den Text aus der Datenbank anhängen? |
Re: Problem mit GeSHi und dem großen "Ü"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Achim,
ich hoffe, ich habe das nun korrekt exportiert. Das "Ü" ist als "DC" eingetragen. Im Anhang der Datensatz. Grüße |
Re: Problem mit GeSHi und dem großen "Ü"
Hallo Matthias,
da ist irgend etwas nicht koscher. DC ist der Code für das große Ü im ISO Latin-1 Zeichensatz, C3 9C ist die Kodierung in UTF-8. Es sieht so aus, als ob du einen Latin-1 kodierten Text einem UTF-8 deklarierten Feld untergeschoben hast. Du solltest deine Routinen überprüfen, die für das Abspeichern zuständig sind. Gute Nacht |
Re: Problem mit GeSHi und dem großen "Ü"
Hi Achim,
ich denke nicht, dass ich den Datensatz falsch in die Datenbank einfüge. Denn wenn ich ein "Ü" außerhalb der GeSHi-Tags verwende, wird es korrekt dargestellt. Wenn ich statt
Code:
das zurückgebe:
return utf8_encode($geshi->parse_code($source, $code_lang));
Code:
dann wird auch alles korrekt angezeigt. Wenn ich den Text direkt in PhpMyAdmin eingebe, dann muss die Kodierung eigentlich auch stimmen. Der Fehler tritt wirklich nur auf, sobald ich den Text durch GeSHi hervorheben lasse.
return $source;
Wenn ein Kodierungsfehler vorliegen sollte (und wenn, dann müsste es an GeSHi liegen, "normaler" Text funktioniert ja), dann würden auch alle Umlaute fehlerhaft dargestellt werden, doch das ist nur beim großen "Ü" der Fall. Daher finde ich das so seltsam. Nachtrag: Ich habe festgestellt, dass die Problematik bei ÄÖÜ und ß auftritt, hingegen äöü werden korrekt dargestellt. :gruebel: Grüße, Matze |
Re: Problem mit GeSHi und dem großen "Ü"
GeSHi gibt bereits UTF8-Kodiert seinen Inhalt zurück. Also kein Grund, dass noch mal utf8-zu encodieren.
BTW: set_encoding wird ignoriert. Als Input-Encoding wird immer UTF8 angenommen, bzw. anders ausgedrückt: Alles >=128 wird unverändert durchgewunken. |
Re: Problem mit GeSHi und dem großen "Ü"
Guten Morgen Benny
Zitat:
Ich muss noch genau testen, ob Sicherheitslücken ausgeschlossen sind, aber es sieht so aus, als würde das zuverlässig funktionieren. Im Endeffekt lag's also gar nicht direkt an GeSHi, sondern an der Vorbereitung des zu highlightenden Codes. :oops: Es grüßt Matze |
Re: Problem mit GeSHi und dem großen "Ü"
Das ist meist so. Grad solche Fehler, dass einzelne Zeichen falsch dargestellt werden, werden häufig durch einen Fehler bei der Zeicheneingabe ausgelöst. Auch beliebt ist immer strip_slashes NACH dem Aufruf von GeSHi auszuführen und sich dann zu wundern, warum der gesamte Quelltext ein String ist ;-)
Bzgl. den Escapes von HTML: Alles was irgendwie gefährlich ist (oder beim Verarbeiten stört) wird mit einer abgewandelten htmlspecialchars-Funktion escaped (Alte PHP-Versionen hatten da mal nen Bug, der Code-Execution zuließ). Zudem dient die Escapes bei GeSHi intern zur Markierung von von bereits hervorgehobenen Dingen. Der einzige Angriff wäre also möglich, wenn man dem User die Möglichkeit gibt, JEGLICHES CSS anzugeben. Das ist aber ein Problem der Vorgehensweise und hier kann der Anwender wesentlich besser agieren, als GeSHi, da man > niccht per-se filtern kann in CSS (Hat dort nämlich durchaus Berechtigung). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz