AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Problem mit GeSHi und dem großen "Ü"

Problem mit GeSHi und dem großen "Ü"

Ein Thema von Matze · begonnen am 31. Mai 2008 · letzter Beitrag vom 1. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 08:23
Hallo zusammen,

ich habe bei der Verwendung von GeSHi ein seltsames Problem. Im gehighlighteten Code (und nur dort) wird das große "Ü" falsch dargestellt. Es sieht so aus, als würde etwas mit der Kodierung nicht stimmen, doch da die anderen Umlaute funktionieren, kann ich mir das nicht erklären. Im Anhang ist ein Screenshot und falls es relevant sein sollte, hier der Link zu einer Beispielseite

Bis zu dieser Zeile stimmt alles, doch diese verursacht das Problem:

Code:
return utf8_encode($geshi->parse_code($source, $code_lang));
Ohne utf8_encode() werden die Umlaute alle falsch dargestellt. Da nützt auch ein

Code:
$geshi->set_encoding('UTF-8');
nichts.

Habt ihr eine Idee, was die Ursache für das Problem sein könnte?

Ein schönes Wochenende wünscht
Matze
Miniaturansicht angehängter Grafiken
geshi_ue_124.png  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 18:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 20:03
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 20:12
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?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 20:31
Hallo Achim,

ich hoffe, ich habe das nun korrekt exportiert.
Das "Ü" ist als "DC" eingetragen. Im Anhang der Datensatz.

Grüße
Angehängte Dateien
Dateityp: txt datensatz_617.txt (4,6 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 21:08
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 21:24
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:
return utf8_encode($geshi->parse_code($source, $code_lang));
das zurückgebe:
Code:
return $source;
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.
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.

Grüße,
Matze
  Mit Zitat antworten Zitat
Benutzerbild von BenBE
BenBE

Registriert seit: 3. Apr 2005
Ort: Jahnsdorf
48 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 31. Mai 2008, 22:50
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.
Benny Baumann
Je komplexer das System, desto kleiner die Fehler; je kleiner die Fehler, desto häufiger ihr Auftreten!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 1. Jun 2008, 07:26
Guten Morgen Benny

Zitat von BenBE:
GeSHi gibt bereits UTF8-Kodiert seinen Inhalt zurück. Also kein Grund, dass noch mal utf8-zu encodieren.
Danke für den Tipp. Durch diesen bin ich darauf gekommen, dass ich an einer Stelle html_entity_decode() nutze und dass es daran liegen muss. Wenn ich vor dem Funktionaufrud fie HTML-Zeichen (Ä ...) durch die uncodierten Zeichen ersetze geht es nun.
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.

Es grüßt
Matze
  Mit Zitat antworten Zitat
Benutzerbild von BenBE
BenBE

Registriert seit: 3. Apr 2005
Ort: Jahnsdorf
48 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Problem mit GeSHi und dem großen "Ü"

  Alt 1. Jun 2008, 11:02
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).
Benny Baumann
Je komplexer das System, desto kleiner die Fehler; je kleiner die Fehler, desto häufiger ihr Auftreten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz