Sven Rautenberg: String Enkodierung

Beitrag lesen

Moin!

welche Möglichkeiten gibt es, die Kodierung eines Strings herauszufinden und diese ggf. rückgängig zu machen, wenn man nicht weiß mit was der alles so escaped und umgewandelt wurde? Gibts da ein Allheilmittel?

Nein, gibt es nicht.

Ich nenne mal ein Bsp:

Der String: fswäöasd hat laut echo strlen("fswäöasd")  eine Länge von 10.

Dann ist er in UTF-8 vorhanden.

Hole ich den selben String aus der DB und teste den, dann hat der ne Länge von 23. Also muss ja nen bißchen was dazugekommen sein.

Sicher, dass das nicht Whitespace ist?

Lass dir mal alle Teststrings als Hex-Darstellung ausgeben:
echo chunk_split(bin2hex($string), 2, " ");

Leider weiß ich nun mal nicht, wie der vor dem INSERT bearbeitet wurde. Die Seite und auch die DB laufen unter UTF8.

Das wirst du im Zweifel nachforschen müssen. Grundsätzlich wird die Datenbank aber kein so schreckliches Problem darstellen, wenn sie sowohl beim Schreiben, als auch beim Lesen auf die gleiche Weise falsch kontaktiert wird (d.h. ohne Angabe des Encodings der Connection - üblicherweise mit "SET NAMES utf8" als Query, oder mysqli::set_charset()).

- Sven Rautenberg