Umlaute werden nicht erkannt

  • PHP

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von xored.

    Umlaute werden nicht erkannt

    Hey,

    ich habe ein komisches Problem.
    Ich habe folgendes Script als Login:

    PHP-Quellcode

    1. //======================================================================
    2. // LOGIN
    3. //======================================================================
    4. if (mysqli_real_escape_string($mysqli, $_GET['handler']) == "login") {
    5. $User = mysqli_real_escape_string($mysqli, $_GET['param2']);
    6. $Password = mysqli_real_escape_string($mysqli, $_GET['param3']);
    7. $result = $mysqli->query("SELECT * FROM ".$Usr." WHERE Benutzer = '" . $User . "' AND Passwort = '" . $Password . "'");
    8. if ($result->num_rows == 0) {
    9. echo "Not found";
    10. } else {
    11. echo "Found!";
    12. }
    13. }



    Bis auf das Fehlen von prepared Statements klappt auch alles, ABER..
    Wenn ich nun einen User "jürgen" in der Datenbank habe, dann klappt beim Login sowohl jürgen, als auch jurgen, was gar keinen Sinn ergibt.
    Umlaute werden also nicht von den dazugehörigen normalen Buchstaben unterschieden.

    Ich habe schon versucht die Kodierung zu verändern - ohne Erfolg:

    PHP-Quellcode

    1. $mysqli = new mysqli($servername, $username, $password, $db);
    2. $mysqli->set_charset("utf8");


    Ich verstehe einfach nicht warum, wenn ich dann einen anderen Buchstaben ändere, dann gibt mein Login "Not found" aus, was ja dann auch stimmt, also muss es an den Umlauten liegen. Jurgen ist ja nicht Jürgen..

    Hat jemand schonmal mit sowas zu tun gehabt?
    Danke..

    Gruß xored


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Uff, das scheint ein Feature von der UTF Implementierung von MySQL zu sein:
    stackoverflow.com/questions/18…racters-mixup-%C3%BC-vs-u

    Falls du zugriff auf die Konfiguration des MySQL Servers hast, wäre es wohl gut, du ließt dich mal hier durch:
    dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html

    Und wählst dann für deinen Server die passenden charset und collation aus.
    Lässt sich natürlich auch Per Schema oder per Tabelle einstellen.

    Nebenbei, wenn du Unicode voll unterstützen möchtest, solltest du auf utf8mb4 setzen.