kostenloser Webspace werbefrei: lima-city


MySQL Umlaute werden nicht richtig abgerufen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    c*************h

    Hallo, auf meiner Webseite ist ein Login.
    Eigentlich funktioniert der, aber nur, wenn in einem Usernamen ein Umlaut steht, kann sich dieser nicht einloggen!
    In der DB werden die ganzen Umlaute korrekt dargestellt!
    Wieso klappt das nicht?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Hast du die Zeichencodierung shcon überprüft?
    Es sollte in der Datenbank "utf8" für die Spalten ausgewählt sein, genauso sollte deine Webseite mit UTF-8 arbeiten.

    Dazu gibt es aber schon einige Threads:
    https://www.lima-city.de/thread/umlauteproblem-mit-mysql
    http://www.lima-city.de/thread/umlaute-mit-str_replace-umwandeln
    ...
  4. Autor dieses Themas

    c*************h

    Das stimmte zwar und ich hab das jetzt geändert, aber es funktioniert immer noch nicht, kann das auch an der md5-Verschlüsselung liegen?

    Beitrag zuletzt geändert: 13.2.2012 16:18:00 von carl-schoeneich
  5. carl-schoeneich schrieb:
    Das stimmte zwar und ich hab das jetzt geändert, aber es funktioniert immer noch nicht, kann das auch an der md5-Verschlüsselung liegen?


    Du hast die Usernamen verschlüsselt in der DB liegen?
    Leg mal jetzt nach der Veränderung neue User an und teste diese mal.
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    carl-schoeneich schrieb:
    ... kann das auch an der md5-Verschlüsselung liegen?
    MD5 ist keine Verschlüsselung!!!
    Ich schreib jetzt nicht nochmal den Unterschied auf. Hier kann das nachgelesen werden.

    copynpaste schrieb:
    Du hast die Usernamen verschlüsselt in der DB liegen?
    Sinnloser als das geht es wohl kaum....
    "Verschlüssel" (damit meine ich hash) bitte nur die Passwörter und lass die Benutzernamen im Plaintext.
  7. Von verschlüsselt kann ja wohl nicht die Rede sein.
    Und die Umlaute bekommt er ja so auch nicht mehr aus der Datenbank.
    Im Prinzip gibt es folgende Stellen, die eine Kodierung benötigen:
    Tabelle (z.B. in PHPMyAdmin setzen)
    Datenbank (~)
    Datenbankclient (mysql_set_charset)
    HTML-Seite(z.B. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />)

    Sobald eins von diesen Gliedern die falsche Codierung hat, kommt Müll raus.
    Um die Umlaute richtig anzuzeigen würde ich UTF8 empfehlen.
  8. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    sektor schrieb:
    Tabelle (z.B. in PHPMyAdmin setzen)
    Datenbank (~)
    Datenbankclient (mysql_set_charset)
    HTML-Seite(z.B. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />)

    ...
    Datei-Codierung (beim Speichern einer Datei)
    Default-Codierung (.htaccess)
    PHP-Header, so verwendet -> header('Content-Type: text/html; charset=utf-8');
    und so weiter...

    Auf jeden Fall kann man versuchen, mittels utf8_encode, bzw. utf8_decode die Strings wieder zu korrigieren...

    Beitrag zuletzt geändert: 13.2.2012 18:16:24 von anti-atomkraft
  9. Autor dieses Themas

    c*************h

    Also erstens: Ich habe die Usernamen nicht verschlüsselt in der Datenbank liegen!
    Aber am Anfang sind die Passwörter gleich dem Usernamen!
    Und wenn der username z.B. martin.müller ist geht das irgendwie nicht!

    Welche Kodierung genau sollte die DB haben, da gibt es ja richtig viele utf-8...!!!

    Beitrag zuletzt geändert: 13.2.2012 19:30:42 von carl-schoeneich
  10. carl-schoeneich schrieb:
    Also erstens: Ich habe die Usernamen nicht verschlüsselt in der Datenbank liegen!
    Aber am Anfang sind die Passwörter gleich dem Usernamen!
    Und wenn der username z.B. martin.müller ist geht das irgendwie nicht!

    Welche Kodierung genau sollte die DB haben, da gibt es ja richtig viele utf-8...!!!
    beim create databases if not exists ... steht bei mir immer 'DEFAULT CHARACTER SET utf8'
  11. Hier ein Tipp von mir:

    PHP:
    <?php header('Content-Type: text/html; charset=utf-8'); ?>
    <?php 
    $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB);
    $mysqli->set_charset('utf8');
        # oder
    $mysqli->query("SET NAMES 'utf8'");
    ?>
    Gleiches gilt für normal mysql, jedoch kann dort nur die query Version, zum setzen der UTF8, für die Verbindung, genutzt werden.

    (x)HTML:
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />


    HTML5:
    <meta http-equiv="content-type" content="text/html" />
    <meta charset="utf-8" />


    MySQL:
    CREATE TABLE IF NOT EXISTS `tablename` (
    .....
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;



    Beitrag zuletzt geändert: 18.2.2012 11:50:57 von dexus85
  12. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    dexus85 schrieb:
    <?php header('Content-Type: text/html; charset=utf-8'); ?>
    <?php 
    $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB);
    $mysqli->set_charset('utf8');
        # oder
    $mysqli->query("SET NAMES 'utf8'");
    ?>
    Gewöhn dir bitte an
    //
    als Kommentarzeichen zu benutzen.

    dexus85 schrieb:
    Gleiches gilt für normal mysql, jedoch kann dort nur die query Version, zum setzen der UTF8, für die Verbindung, genutzt werden.
    Mit mysql_set_charset() wird die Zeichencodierung festgelegt. Die Manpage von PHP dazu:
    Dies ist der bevorzugte Weg zur Änderung des Zeichensatzes. Über mysql_query() SET NAMES ... auszuführen, wird nicht empfohlen.


    dexus85 schrieb:
    (x)HTML:
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    Die Zeile kannst du dir gleich sparen, da sie von den meisten Browsern einfach ignoriert wird. Verwende stattdessen den equivalänten HTTP-Header:
    <?php header('Content-Type: text/html; charset=utf-8'); ?>


    dexus85 schrieb:
    MySQL:
    CREATE TABLE IF NOT EXISTS `tablename` (
    .....
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

    Wichtig ist nur das:
    CREATE TABLE IF NOT EXISTS `tablename` (
    .....
    ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  13. hackyourlife schrieb:
    dexus85 schrieb:
    Gleiches gilt für normal mysql, jedoch kann dort nur die query Version, zum setzen der UTF8, für die Verbindung, genutzt werden.
    Mit mysql_set_charset() wird die Zeichencodierung festgelegt. Die Manpage von PHP dazu:
    Dies ist der bevorzugte Weg zur Änderung des Zeichensatzes. Über mysql_query() SET NAMES ... auszuführen, wird nicht empfohlen.


    Merci, da kann man sehen das ich schon lange nicht mehr die MySQL Man Page auf PHP aufgerufen habe :-)

    Btw. Warum sollte ich mir
    //
    statt
    #
    angewöhnen?

    Ich verwende meistens // nur zum schnellen kommentieren nutze ich #, weiß nicht mal warum :-D
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!