Rolf B: mysql, Umlautproblem

Beitrag lesen

Hallo Jörg,

habe in einer varchar-Spalte ein Umlautproblem

Aha. Soso. 🤔🔮 🤷‍♂️

Was kann ich noch tun?

Mehr Infos geben. Alle drei deiner Funktionen führen zum gleichen Ergebnis. D.h. deine Voraussetzungen sind falsch.

Guckst Du (flugs mit der PHP Sandbox getestet):

<?php
$utf8 = "Hällo";
dump_bytes($utf8);

$latin1 = utf8_decode($utf8);
dump_bytes($latin1);

$latin2 = iconv('UTF-8', 'ISO-8859-1', $utf8);
dump_bytes($latin2);

$latin3 = mb_convert_encoding($utf8, 'ISO-8859-1', 'UTF-8');
dump_bytes($latin3);

function dump_bytes($src) {
    echo $src . " - " . bin2hex($src) . "\n";
}

Ausgabe ist:

Hällo - 48c3a46c6c6f
H�llo - 48e46c6c6f
H�llo - 48e46c6c6f
H�llo - 48e46c6c6f

D.h. alle 3 Funktionen übersetzen den UTF-8 codierten String in einen Latin-1 codierten String. C3A4 ist die UTF-8 Codierung und E4 die Latin-1 Codierung von ä.

Wenn diese Konvertierung dein Problem nicht löst, hast Du ein anderes Problem, als Du vermutest. Welches? Keine Ahnung. Prüfe mit bin2hex genauer, welche DB-Abfragen welche Codierung liefern. Außer der Codierung, die für DB, Schema, Table oder Column gesetzt ist, kann auch die Connection eine Codierung haben. Ich bin jetzt nicht sicher, welche Codierung PHP per Default einstellt, das kannst Du aber abfragen.

Ich nehme an, damit kommst Du der Sache näher.

Rolf

--
sumpsi - posui - obstruxi