MySQL-Select und PHP Switch, Sonderzeichen

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von timbajr, 06.12.2006.

  1. timbajr

    timbajr Thread Starter MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    Hi ihr,

    ich möchte aus einer MySQL DB (auf deren Encoding ich nicht zwingend Einfluss habe, zumindest noch nicht) auf ein Attribut ein switch in PHP machen. Leider kommt in einem String ein Sonderzeichen vor. Nun meine Frage, wie krieg ich das mit dem Enconding hin, dass ich zB auf "Müller" ohne Probleme ein switch ausführen kann?

    Gruß
    timbajr
     
  2. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.832
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
    du kannst doch mit mysql statements das encoding einstellen (query mit SET NAMES)...
    welche mysql version ist es denn?
    und verwendest du php-mysql oder php-mysqli?
     
  3. timbajr

    timbajr Thread Starter MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    MYSQL Version 5.0.21

    Ich setze das Encoding mit SQL Statements auf latin1. Das müsste doch dann stimmen oder nicht?
     
  4. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.832
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
    stimmen ist relativ ;)
    weil die strings in php verschiedene encodings haben können...
    kannst ja das encoding feststellen und ggf. umkodieren...
     
  5. timbajr

    timbajr Thread Starter MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    Hab ich probiert mit :
    Code:
    switch(mb_convert_encoding($string,"utf-8")){
    case mb_convert_encoding("textmitÜÜÜ","utf-8"):
    ...
    
    }
    
    Irgendwie will es trotzdem nicht?

    Geht das nicht irgendwie "einfacher"? Ich hatte das Problem irgendwie noch nie?!
     
  6. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.832
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
    stell doch das encoding auf utf8 in mysql, dann brauchst nicht konvertieren...
    bzw mb_detect_encoding um zu checken, ob du konvertieren musst...
    oder probier mal utf8_encode statt mb_convert_encoding
     
  7. timbajr

    timbajr Thread Starter MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    Hab ich mit

    Code:
    if(!mysql_query("set character_set_results='utf8';")){
        die(mysql_error());
    }
    
    .. für server, database und client gemacht. Falsch? Oder was vergessen.

    OFFTOPIC:
    Hatte übrigens auf dich gehofft, dass du online bist. Hab zwar noch nie eine Frage hier eingestellt, aber deine Kommentare sind durchgehend sehr wertvoll und zeigen Kompetenz ;-) Mal so nebenbei "gelobt"
     
  8. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.832
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
    sollte eigentlich reichen, es sei denn du schickst auch utf8 queries an den server...

    check doch mal eben was für einen string du da wieder kriegst bei müller mit mb_detect_encoding...
     
  9. timbajr

    timbajr Thread Starter MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    Der String ist laut mb_detect_encoding ein UTF-8. Das "komische" ist, dass alle nicht mit umlaut-versehenen Strings alle als ASCII ausgegeben werden (also auch noch mb_convert_encoding).

    EDIT: ich schicke ganz normal per mysql_query die Anfragen. Also bisher hats immer so geklappt...
     
  10. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.832
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
    probier mal utf8_encode

    ich schätze mal mb_detect_encoding gibt immer ascii aus, wenn keine umlaute da sind, da der wohl daran nur erkennt was das für ein string ist...
     
Die Seite wird geladen...

Diese Seite empfehlen