bleicher: umlaute

Grüße,
entweder bin ich heute besonders blöd, oder ich werde vom pech verfolgt:

habe mit xampp eine mySQL-datenbank.

Zeichensatz/Kollation der mysqlverbindung - utf-8
kollation der datenbank : utf-8
ebenso die zeile in der tabelle mit dem text.

die umlaute werden auch korrekt gespeichert.

nur wenn ich die zeile über PHP abfrage

  
  
$sql="SELECT * FROM `pp`";  
$sql=mysql_query($sql);  
  
while ($text=mysql_fetch_assoc($sql)){  
echo "<p> ".$text['text']." </p>";  
}  

kriege ich keine umlaute sondern hieroglyphen.
ICH HABE GEGOOGELT
  aber sämtliche hinweise gehen auf die falsche kodierung im browser oder datenbank.
datenbank speichert die umlaute ja (wenn ich den eintrag im phpadmin zum bearbeiten aufrufe, sind umlaute da), browserkodierung habe ich MANUELL auf utf-8 erzwungen und es auch mal der automatik (<meta http-equiv="content-type" content="text/html; charset=utf-8"> im header) überlassen.

nix.

kennt wer noch eine fehlerquelle die ich übersehen habe?

MFG
bleicher

--
__________________________-
Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
http://www.sexgott-or-not.com/?test=428054
  1. hi,

    Zeichensatz/Kollation der mysqlverbindung - utf-8

    Wie sieht diese aus?

    mfg

  2. echo $begrüßung;

    habe mit xampp eine mySQL-datenbank.
    Zeichensatz/Kollation der mysqlverbindung - utf-8

    Das ist die Verbindungskodierung, die phpMyAdmin verwendet, von dem du diese Information abgeschrieben hast. Sie ist für deine Verbindungen uninteressant. Du musst dir schon selbst eine mit dem Server aushandeln, und zwar für jede Verbindung (wenn die gewünschte Kodierung von der Serverkonfiguration abweicht, wovon in deinem Fall mit Sicherheit auszugehen ist).

    nur wenn ich die zeile über PHP abfrage
    kriege ich keine umlaute sondern hieroglyphen.

    Das kann nicht sein, denn Hieroglyphen (zumindest die aus Ägypten bekannten) noch gar nicht in Unicode enthalten.

    ICH HABE GEGOOGELT

    Kein Grund zu schreien, wenn du dabei die Verbindungskodierungshinweise übersehen hast. Die stehen im hiesigen Archiv übrigens auch schon zu Hauf drin.

    Neuere PHP-Versionen kennen mysql_set_charset(), ansonsten nimm ein "SET NAMES"-Statement.

    echo "$verabschiedung $name";

    1. Grüße,

      erstmals - danke für die neuen stichwörter

      Das ist die Verbindungskodierung, die phpMyAdmin verwendet, von dem du diese Information abgeschrieben hast. Sie ist für deine Verbindungen uninteressant. Du musst dir schon selbst eine mit dem Server aushandeln, und zwar für jede Verbindung (wenn die gewünschte Kodierung von der Serverkonfiguration abweicht, wovon in deinem Fall mit Sicherheit auszugehen ist).

      davor ging es ja ohne? kann man das den nnciht dauerhaft einstellen >_<?

      Das kann nicht sein,

      wenn ich ganz präzise bin, dann zeigt opera schwarze rauten mit weißen fragezeichen drin.

      ICH HABE GEGOOGELT

      Kein Grund zu schreien, wenn du dabei die Verbindungskodierungshinweise übersehen hast. Die stehen im hiesigen Archiv übrigens auch schon zu Hauf drin.

      ja - nur muss man ja wissen wonahc man suchen soll - jetzt kann ich ja weiter suchen.

      Neuere PHP-Versionen kennen mysql_set_charset(), ansonsten nimm ein "SET NAMES"-Statement.

      ich wollte bei php 4 bleiben - ist es denn nicht möglich die verbindungskodierung dauerhaft einzustellen? zuvor kam ich immer ohne aus >-<

      MFG
      bleicher

      --
      __________________________-
      Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
      http://www.sexgott-or-not.com/?test=428054
      1. echo $begrüßung;

        erstmals - danke für die neuen stichwörter

        Dabei gibt es doch im MySQL-Handbuch (leider etwas versteckt unter Internationalization and Localization das Kapitel Character Set Support.

        Neuere PHP-Versionen kennen mysql_set_charset(), ansonsten nimm ein "SET NAMES"-Statement.
        ich wollte bei php 4 bleiben - ist es denn nicht möglich die verbindungskodierung dauerhaft einzustellen? zuvor kam ich immer ohne aus >-<

        "Ohne" gab es zu keinem Zeitpunkt. Eine Kodierung ist beim Abbilden von Zeichen in der EDV immer vorhanden. Da stimmte vielleicht zufälligerweise die Voreinstellung mit deinem Bedarf überein, oder eine Abweichung hat sich zufälligerweise nicht negativ ausgewirkt. Und ja, man kann die Voreinstellung ändern, wenn man den MySQL-Server konfigurieren darf. Wenn die Scripte nachher beim Provider laufen sollen, ist das eher schlecht möglich. Wenn man seine Scripte ordentlich organisiert hat, ist das SET NAMES nur an einer einzigen Stelle hinzuzufügen. Wenn man hingegen Datenbankzugriffe überall verteilt hat, rächt sich das nun mit Mehraufwand für das Nachtragen an allen Stellen.

        Als Voreinstellung lässt sich nur character-set-server einstellen. Davon leitet sich ab:

        • character_set_client
        • character_set_connection und
        • character_set_results

        Diese drei sind für die Verbindungskodierung relevant und werden bei einem SET NAMES eingestellt. (Die genaue Bedeutung bitte im oben verlinkten Kapitel nachlesen.) Es ist aber auch character_set_database betroffen, was aber nur eine Default-Einstellung für neu erstellte Datenbanken ist. Die Datenbankeinstellung ihrerseits ist eine Default-Einstellung für neu erstellte Tabellen, die eine Default-Einstellung für neue Felder ist. Und die hat dann erst Auswirkungen auf die im Feld speicherbaren Daten.

        Alternativ gibt es noch init_connect, mit dem man ein Statement konfigurieren kann, das bei jedem Connect ausgeführt wird.

        echo "$verabschiedung $name";

        1. dann traf wohl beide zu  - sowhl mein pech als auch meine dummheit waren beteiligt ;) danke für die ausfürhliche erklärung und die links.
          MFG
          bleicher

          --
          __________________________-
          Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
          http://www.sexgott-or-not.com/?test=428054