Prüfung welche Codierung ein String ist?

Kahmoon

Erfahrenes Mitglied
Tach beisammen,

kann ich prüfen welche Codierung ein String ist?

Folgendes Problem
Ich muss automatisiert einen Haufen Artikel für einen Export in XML Files vorbereiten. Bisher klappt auch alles prima durch UTF Umwandlung. z.B.

PHP:
utf8_encode(urldecode(trim($inhalt["ar_keywords"])))
Aber ab und an sind Einträge in der DB die wie folgt aussehen und ich krieg die einfach nicht umgewandelt... :(
Paris Hilton Gefängnis

Hab schon mit entsprechenden Regulären Ausdrücken versucht genau diese Zeichen zu ersetzen...leider ohne Erfolg. Hat jemand ne Idee?

Gruß
Franky
 
Das hängt wiederum davon ab, wie die Eingabe (also das PHP-Skript) kodiert ist und welche Kodierung bei der Ausgabe angegeben wurde. Mir scheint, dass du ISO 8859-1 als Ausgabe-Zeichensatz angibst, die Daten jedoch (doppelt) UTF-8-kodiert sind. Ein Beispiel zur Verdeutlichung:
PHP:
header('Content-Type: text/html; charset=iso-8859-1');
$str = "\xC3\xA4"; // entspricht "ä" in UTF-8
var_dump(utf8_encode($str));
 
Ja das Dokument ist iso-8859-1. Wäre also sinnvoll es in UTF-8 zu ändern?

Edit:
Also ich habe jetzt das Dokument in UTF-8 geändert und alle utf8_encodes entfernt.

Leider kommen aus der DB nach wie vor Daten mal mit so mal so. Diese Zeichen werden nach wie vor nicht umgewandelt. ¼ ist doch auch kein utf oder?

Gr�¼ne fordern Reform der Reform

Irgendwie muss ich das abfangen.
 
Zuletzt bearbeitet:
„¼“ ist das UTF-8-kodierte ü-Zeichen mit ISO 8859-1 interpretiert. Denn ü-Zeichen wird in UTF-8 mit 0xC3BC kodiert, was in ISO 8859-1 zwei Zeichen entspricht, nämlich den Zeichen „“ und „¼“.


Nachtrag: Am besten verwendest du durchgehend, von der Eingabe über die Verarbeitung bis zur Ausgabe, eine einheitliche Zeichenkodierung, bevorzugt UTF-8, da damit sämtliche Unicode-Zeichen kodiert werden können.
 
Ok. Dokument ist UTF-8. So klappt es jetzt bisher zuverlässig. Noch kein faules Ei gefunden.

PHP:
$arr['ar_text']         = utf8_decode(strip_tags($arr['ar_text'], $a_tags));


Und da ich Dich (Regulärer-Ausdruck-Checker) an der Strippe habe, hab ich direkt noch eine zusätzliche Frage.

In manchen Feldern wurde mit Leerzeichen gefüllt. Es kommt also mehrfach    

Bei Regulären Ausdrücken gibt es ja Quantifizierer. Aber folgende Funktion geht nicht....sie sollte bei mehr als 2 x   diese Zeichen ersetzen. Noch besser wäre wenn nur es   sind alle zu entfernen.

PHP:
function removeMultiblank($text)
{
    $suche = '/ {2,}/';
    $ersatz = '';
    
    return preg_replace($suche, $ersatz, $text);
}
 
Zurück