Ich mache folgenden Insert mittels PDO:
insert into table (text) values ('1:0 Ä')Als Ergebnis steht dann in der Datenbank "1? Ä". Wenn ich das mit irgendeinem anderen Zeichen als "Ä" mache, steht korrekt "1:0" in der Datenbank, aber bei Ä nicht.
Woran erkennst du, was in der Datenbank steht? Über mysql (Befehlszeile), über ein Hilfsprogramm wie phpMySQL oder fragst du selbst per PHP ab?
Gib doch mal per PHP alle Zeichen, die du aus der Datenbank erhältst, einzeln aus, etwa so:
header("Content-Type: text/plain; charset=iso-8859-1");
…
$s = Betroffenes_Datum_aus_der_Datenbank;
for ($i = 0; $i < strlen($s); $i++) {
echo s{$i} . " " . ord(s{$i}) . " ";
}
Das Problem, dass ":zahl", also z.B. ":3", zu einem Fragezeichen konvertiert wird, tritt auch auf, wenn ich einen HTML-Link im String habe:
<a href="http://www.seite.de/index.php?var1=irgendwas&var2=irgendwas" target="blank">irgendwohin</a>
In dieser Adresse steht kein ":3", und wenn's drin wäre, wo träte das Problem dann auf? Im HTML-Code? In der Adresszeile des Browsers?
Wenn ich mit PHPs stripslashes()-Funktion alle Slashes entferne, tritt das Problem übrigens nicht mehr auf
Wie sieht denn der von stripslashes() unveränderte Text, also mit Rückstrichen aus?