Eurozeichen parsen - Zeichen Wirr

chmee

verstaubtes inventar
Premium-User
N'Abend Jungs und Mädels..

Sitz grad an einem kleineren Projekt und das Euro-Symbol ist schon ne kleine Welt für sich.
Wenn ich Regex darauf loslasse, komme ich nicht umhin, mehrere Möglichkeiten dafür anzugeben:

Code:
\x80
€
€
€
€
& # 8 3 6 4 ;

Irgendwas vergessen? :D

Nun, jetzt möchte ich eine weitere Seite (mit Einverständnis des Besitzers) crawlen und die Seite scheint grundsätzlich eine falsche Kodierung anzugeben (sieht Jemand woran es liegt? und welche nun ausgeworfen wird?) Das Validator-Addon zeigt ein Fragezeichen. In php landet bei Sonderzeichen nur Mist, zB ist das Eurosymbol nun

PHP:
$strangeEuro=chr(226).chr(130).chr(172);

Die Umlaute nicht minder kaputt.
Jemand ne Idee, woran es liegt?
Muss ich in php die Textkodierung umstellen?
Kann ich dem Webadmin irgend nen Tip geben?


Weitere Infos:
Im Validator wird folgender Fehler gezeigt :
..because on line 1195 .. one or more bytes that I cannot interpret as utf-8 .. The error was: utf8 "\xA0" does not map to Unicode
Es scheint sich um ein Symbol im Foren-Footer zu handeln..

p.s.:
Hm.. Aha, es gibt also noch Unicode Derivate wie zB UTF-8 Hexadezimal, dort ist das Euro-Symbol nämlich 0xE2 0x82 0xAC (was meinem strangeEuro entspricht) Wie gehe ich gegen so etwas vor?

mfg chmee
 
Sowas kommt z.B. vor wenn man bei UTF-8 codierten Seiten htmlentities oder htmlspecialchars ohne charsetangabe für die Ausgaben verwendet.
Wenn der Webmaster stattdessen z.B. htmlspecialchars($string, ENT_NOQUOTES, 'UTF-8') verwendet sollten die Zeichen korrekt dargestellt werden.
Sollte der String danach leer sein hilft es die Quelle vorher korrekt zu codieren. (Dann war sie nicht UTF-8)
z.B. so: $string = mb_convert_encoding($string, 'UTF-8', mb_detect_encoding($string));

Beste Grüße,
/Cy
 
Zuletzt bearbeitet:
Zurück