stags04: Ausgabe von Sonderzeichen

Hallo; hoffe es kann mir jemand helfen! Schlage mich mit dem folgenden Problem herum:

Anstatt der Umlaute ä,ö,ü werden mir bei der Ausgabe von Daten aus einer Datenbank auf der Website nur diese doofen Fragezeichen angezeigt. Seltsam dabei ist, dass in der Datenbank selbst die Umlaute dargestellt werden und erst beim Ausgeben auf der Page in die Fragezeichen wechseln.

  1. Hi,

    Vermutlich liest dein PHP-Skript die Umlaute mit einer anderen Zeichenkodierung ein als sie in deiner Datenbank gespeichert sind. Ändere also bei einem den Zeichensatz auf den des anderen :)

    Mfg

    1. Also soviel ich sehe ist die Codierung bei beidem charset=utf8_unicode_ci..
      oder habe ich da was falsch verstanden?

      1. Also soviel ich sehe ist die Codierung bei beidem charset=utf8_unicode_ci..
        oder habe ich da was falsch verstanden?

        Hallo,

        wenn tatsächlich an beiden stellen der selbe Zeichensatz zum Einsatz kommt, müsste es eigentlich klappen. Wenn du in der Datenbank utf8_unicode verwendest, könntest du vielleicht mit der folgenden PHP-Funktion mal dein Glück probieren:
        http://de.php.net/manual/en/function.utf8-encode.php

        Gruß

        1. Hello,

          wenn tatsächlich an beiden stellen der selbe Zeichensatz zum Einsatz kommt, müsste es eigentlich klappen. Wenn du in der Datenbank utf8_unicode verwendest, könntest du vielleicht mit der folgenden PHP-Funktion mal dein Glück probieren:
          http://de.php.net/manual/en/function.utf8-encode.php

          Wieso zwei Stellen?
          Sind es nicht ein paar mehr?

          Datenbank -> (Übertragung zur API ->) Verarbeitung in der API -> (Übrtragung zum Browser ->) Anzeige im Browser

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. hi,

    Anstatt der Umlaute ä,ö,ü werden mir bei der Ausgabe von Daten aus einer Datenbank auf der Website nur diese doofen Fragezeichen angezeigt. Seltsam dabei ist, dass in der Datenbank selbst die Umlaute dargestellt werden und erst beim Ausgeben auf der Page in die Fragezeichen wechseln.

    Ich tippe auf ein Problem schon bei der Wurzel, also der Verbindung.

    mfg

    --
    echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
    array(2) {
      ["SELFCODE"]=>
      string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
      ["Meaningful"]=>
      string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
    }
  3. echo $begrüßung;

    Anstatt der Umlaute ä,ö,ü werden mir bei der Ausgabe von Daten aus einer Datenbank auf der Website nur diese doofen Fragezeichen angezeigt. Seltsam dabei ist, dass in der Datenbank selbst die Umlaute dargestellt werden und erst beim Ausgeben auf der Page in die Fragezeichen wechseln.

    Wie schaust du denn "in die Datenbank" hinein? Jegliches Datenanzeigen ist eine Ausgabe. Wenn du den phpMyAdmin nimmst, und der alles richtig anzeigt, dann sind schonmal deine Daten in Ordnung.

    Wie üblich bei der Verarbeitung von Daten muss
    a) ein beteiligtes System mit den Daten umgehen können und
    b) das weiterreichende und das entgegennehmende System müssen sich bei der Übertragung verstehen.
    Das gilt auch in Hinsicht auf Kodierungen.

    Konkret heißt das im Falle MySQL für a), dass die String-Felder (die Felder!, nicht die Tabellen- oder Datenbankeinstellung) in einer passenden Kodierung konfiguriert sein müssen. Und b) MySQL und der Client müssen sich für ihre individuelle Verbindung auf eine Kodierung geeinigt haben. Das geht mit der PHP-Funktion mysql(i)_set_charset() oder zur Not mit einem SET NAMES-Statement, wenn das PHP zu alt ist und die Funktion nicht kennt.

    Und dann gibt es selbstverständlich auch noch den Browser und die Verbindung zwischen PHP und dem Browser sowie den Fakt, dass PHP erst ab Version 6 ordentlich mit Mehrbytekodierungen umgehen kann, was aber nicht stört, wenn die Daten nur unbehandelt durchgereicht werden.

    echo "$verabschiedung $name";