unicode charset & PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • unicode charset & PHP

    Hallo,

    ich habe ein zml blödes Problem mit Umlauten in meiner MySQL-Db.
    Der Zeichensatz ist utf, charset utf_general_ci
    Nachdem Aufbau einer Verbindung in PHP Skript setze ich diverse Variablen mit folgendem Query:

    PHP-Code:
    <?php
    mysql_query
    ("
    set names 'utf8';
    set collation_connection ='utf8_unicode_ci';
    set collation_database='utf8_unicode_ci';
    set character_set_client='utf8';
    set character_set_results='utf8';
    set character_set_server='utf8';
    set character_set_database='utf8';
    "
    );
    ?>
    Umlaute werden in der Datenbank jetzt mit komischen Sonderzeichen gespeichert, muss des sql query im Moment vorher mit utf8_encode(); encoden um Ergebnisse zu erhalten.
    Mein Problem ist jetzt dass ich aber auch Datensätze habe wo die Umlaute korrekt gespeichert werden, also ö als ö und nicht als ö.
    Das führt nicht selten zu leeren Ergebnissen bei Querrys mit Umlauten.

    jetzt ist meine Frage, ob das alles überhaupt so weit richtig passt (zeichensatz, die ganzen variablen nach dem verbindungsaufbau) und ob umlaute als umlaute oder eben mit diesen sonderzeichen gespeichert werden sollen.
    ausserdem habe ich gehört, dass wenn man den html zeichensatz im header auf utf-8 setzt, man die sonderzeichen nit escapen muss. ist das richtig?

  • #2
    Re: unicode charset &amp; PHP

    Original geschrieben von jonass
    Umlaute werden in der Datenbank jetzt mit komischen Sonderzeichen gespeichert, muss des sql query im Moment vorher mit utf8_encode(); encoden um Ergebnisse zu erhalten.
    Und was überrascht dich daran ?
    Du willst doch utf8-codierte daten speichern.
    Du musst das nur konsequent durchziehen.
    Das ci in utf8_general_ci steht für case-insensitiv.
    Willst du das wirklich ?
    Mit php wirst du noch auf weitere probleme stoßen.


    ausserdem habe ich gehört, dass wenn man den html zeichensatz im header auf utf-8 setzt, man die sonderzeichen nit escapen muss. ist das richtig?
    Zur lektüre, der standard-blog zum thema Klick mich

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Re: unicode charset &amp; PHP

      Original geschrieben von jonass
      PHP-Code:
      <?php
      mysql_query
      ("
      set names 'utf8';
      set collation_connection ='utf8_unicode_ci';
      set collation_database='utf8_unicode_ci';
      set character_set_client='utf8';
      set character_set_results='utf8';
      set character_set_server='utf8';
      set character_set_database='utf8';
      "
      );
      ?>
      Du weißt schon, dass man jeweils nur EINEN Query per mysql_query absetzen kann? Abgesehen davon, dass da ne Menge doppelt ist?!...

      PHP-Code:
      mysql_query('SET NAMES "utf8"');
      header("Content-type: text/html; charset=utf8"); 
      Und statt dem normalen htmlentities()-Aufruf
      PHP-Code:
      htmlentities($textENT_COMPAT'UTF-8'); 
      und das war's schon. Collation kannst du beim Anlegen der Tabelle(n) mit angeben, spart dir den expliziten Query.

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Re: Re: unicode charset &amp; PHP

        Original geschrieben von ghostgambler
        Und statt dem normalen htmlentities()-Aufruf
        htmlentities($text, ENT_COMPAT, 'UTF-8');
        Wozu überhaupt noch Entities, wenn UTF-8 verwendet wird?
        htmlspecialchars zum Entschärfen von HTML-eigenen Zeichen reicht da völlig aus.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Re: Re: Re: unicode charset &amp; PHP

          Original geschrieben von wahsaga
          Wozu überhaupt noch Entities, wenn UTF-8 verwendet wird?
          htmlspecialchars zum Entschärfen von HTML-eigenen Zeichen reicht da völlig aus.
          jo ... ka, habs mir angewöhnt >_>

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar

          Lädt...
          X