UTF-8 und urldecode

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • UTF-8 und urldecode

    Hallo,

    aus einer Datei lese ich Daten aus, die ich in eine MySQL-Tabelle speichern möchte.

    Die Daten der Datei sehe ungefähr wie folgt aus:
    Code:
    70327,Henry+IV,2572,1,720,1
    71996,M%40rk92,-1,1,82,1
    70405,housemouse87,2324,1,1617,18
    69801,junker+herb,2646,6,14278,1
    72050,DerTodesKrieger,2729,1,137,1
    72051,nanahara+2,-1,1,68,1
    71638,Reich,2611,1,742,1
    71755,B%F6hmiboy,2631,1,506,18
    Also wie man sieht, sind die Namen urlencoded.

    Nach dem Öffnen der Datei möchte ich die Daten alle urldecoded in meine Tabelle übertragen und zwar mache ich das wie folgt:
    PHP Code:
    // connect und kram
    mysql_query("SET NAMES 'utf8'") OR DIE (mysql_error());
    mysql_query("SET CHARACTER SET 'utf8'") OR DIE (mysql_error());

    // ... Oeffnen der Datei usw.
    // ...
    while($zeile gzgets($handle4096))
    {
        
    $zerlegung explode(","$zeile); // Teile werden durch Komma getrennt
        
    mysql_query("INSERT INTO ".$mysql_tabelle.
                    (id,name,drei,vier,fuenf,sechs) 
                    VALUES ('"
    .mysql_real_escape_string($zerlegung[0])."',
                            '"
    .mysql_real_escape_string(urldecode($zerlegung[1]))."',
                            '"
    .mysql_real_escape_string($zerlegung[2])."',
                            '"
    .mysql_real_escape_string($zerlegung[3])."',
                            '"
    .mysql_real_escape_string($zerlegung[4])."',
                            '"
    .mysql_real_escape_string($zerlegung[5])."')") OR DIE (mysql_error());

    Soweit wird alles übertragen. Bis auf urlencoded Umlaute wie ä,ö,ü... jedoch Sonderzeichen werden korrekt übertragen.
    Statt ö in die MySQL-Tabelle zu schreiben, bricht der Name an der Stelle einfach ab... woran liegt das?

    Zum besseren Verständnis, wie der Name "abgebrochen wird", noch ein Bild aus phpmyadmin:



    Die Tabelle und die Spalten haben die Kollation utf8_general_ci.

  • #2
    Re: UTF-8 und urldecode

    B%F6hmiboy - das ist aber url-kodiertes kein 'ö' in UTF-8.

    In UTF-8 hätte ö die Hex-Codes C3 B6.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Ok, hat sich erledigt.

      utf8_encode() muss nach urldecode() noch angewendet werden, dann wird der Eintrag richtig in die DB übernommen.

      Comment

      Working...
      X