ich habe einen string mit sonderzeichen, der an php übergeben wird, sagen wir "24 Ω". in der datenbank habe ich ihn als 24 Ω gespeichert. jetzt möchte ich die beiden vergleichen. dafür fange ich Ω ab und ersetze es mit str_replace("Ω", "Ω", $correctarray); durch Ω und vergleiche dann "24 Ω" mit "24 Ω", was auch super funktioniert, dachte ich, weil die seite ja <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> und so ist.
Warum speicherst du entities in der Datenbank? Das hat keinen SInn.
wie dem auch sei. bei genauerer betrachtung stellt sich heraus, dass manche browser/betriebssystem/kombinationen-daraus die "24 Ω" nicht wirklich als "24 Ω", sondern als "24 Ω" übergeben.
Diese Systeme raten vermutlich schlechter als andere - du gibst vermutlich gar keine Zeichenkodierung an, die einen Sinn ergibt und damits wenigstens halbwegs passt, drehen das ein paar Browser wieder um.
Sieht jedenfalls so aus als hättest du UTF-8-codierte Daten vorliegen, überträgst sie aber in einer Single-Byte-Kodierung.
sieht lustig aus, bringt aber mein system arg ins wanken, weil ich das Ω dann nicht mehr durch Ω ersetzen kann und foglich "24 Ω" nicht mehr gleich "24 Ω" ist. kurzum, eine lösung muss her und hier seid ihr mal gefragt, denn mein latein ist am ende.
Verwende konsequent UTF-8 und mache dich mit dem Konzept eines Kontextwechsels vertraut.
mein browser, als der safari, übergibt es übrigens so, dass am ende 24 Ω in der datenbank steht. ist nicht 24 Ω und schon gar nicht 24 Ω aber funktioniert wenigstens für den teil "24 Ω" = "24 Ω".
Schei? Encoding ;)