bert: umlaut-problem

hey,

ich habe ein Datenbank aus der ich einfach nur alle Wörter einer Spalte auslase und darstelle. Wenn mann mit der Maus ein Wort hovert, wird dieses in einem Input Textfeld gezeigt
Wenn ich jetzt in der DB Umlaute angebe, erscheinen im HTML Text wie auch im Input komische Fragezeichen. Wenn ich die Umlaute in der DB als ä etc. eintrage, erscheinen die Umlaute richtig im div, aber im Input wird ä etc angezeigt.
Gibt es eine universal-Lösung um Umlaute in MySQL DBs zu hinterlegen und später überall richtig anzuzeigen??

Danke und Gruß

  1. Gibt es eine universal-Lösung um Umlaute in MySQL DBs zu hinterlegen und später überall richtig anzuzeigen??

    Verwende überall dieselbe Zeichencodierung - nämlich sinnvollerweise UTF-8 und speichere Daten immer Kontextneutral. HTML-Entities haben in einer MySQL-Datenbank nix verloren. Ein Kontextwechsel hat nur bei Bedarf zu erfolgen.

    1. Verwende überall dieselbe Zeichencodierung - nämlich sinnvollerweise UTF-8 und speichere Daten immer Kontextneutral.

      Benutze UTF-8. Trotzdem werden die Zeichen komisch dargestellt. Habs jetzt mit str_replace() versucht, also die Umlaute aus MySQL nach Abfrage durch ü ersetzt. Im Div klappts. Im INPUT wird halt ü angezeigt... Wieso?

      1. Wie geht das denn bei PHP mit dem Zeichensatz? Bei MySQL hab ich das schon auf UTF-8 gestellt. Bei HTML hab ich halt ganz normal den Doctype angegeben...

        1. Hallo,

          Wie geht das denn bei PHP mit dem Zeichensatz?

          so wie überall sonst auch: Beim Speichern der Quellcodes die richtige Codierung wählen, den Server die richtige Codierung angeben lassen (Angabe im HTTP-Header), für den Notfall noch eine meta-Angabe ins Dokument setzen.

          Bei MySQL hab ich das schon auf UTF-8 gestellt.

          Was? Die Codierung der einzelnen Felder? Oder die Codierung der Kommunikation zwischen PHP und MySQL?

          Bei HTML hab ich halt ganz normal den Doctype angegeben...

          ... der damit exakt gar nichts zu tun hat.

          So long,
           Martin

          PS: Lass bitte das Bäumchen-Wechsel-Dich-Spielchen mit dem Nickname. Entscheide dich für *einen* Namen, und bleib dabei.

          --
          Wer es in einem Unternehmen zu etwas bringen will, muss so tun, als hätte er es schon zu etwas gebracht.
          1. so wie überall sonst auch: Beim Speichern der Quellcodes die richtige Codierung wählen, den Server die richtige Codierung angeben lassen (Angabe im HTTP-Header), für den Notfall noch eine meta-Angabe ins Dokument setzen.

            benutze notepad++ und finde keine angabe, die man irgendwie in utf8 ändern könnte

            habe die .htacces bei xampp um folgende zeilen erweiter:
            AddType 'text/php; charset=UTF-8' php
            AddType 'text/html; charset=UTF-8' html

            habe eine metaangabe im header gemacht:
            <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />

            gleiches ergebnis: es werden fragezeichen statt umlaute angezeigt

            Was? Die Codierung der einzelnen Felder? Oder die Codierung der Kommunikation zwischen PHP und MySQL?

            Bei HTML hab ich halt ganz normal den Doctype angegeben...

            ... der damit exakt gar nichts zu tun hat.

            So long,
            Martin

            PS: Lass bitte das Bäumchen-Wechsel-Dich-Spielchen mit dem Nickname. Entscheide dich für *einen* Namen, und bleib dabei.

            1. @@bert:

              nuqneH

              habe die .htacces bei xampp um folgende zeilen erweiter:
              AddType 'text/php; charset=UTF-8' php

              Verwendest du im PHP 'header()'?

              gleiches ergebnis: es werden fragezeichen statt umlaute angezeigt

              Wie wär’s denn mal, deine Seite zu verlinken?

              Qapla'

              PS: Bitte keine Fullquotes!

              --
              Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
              1. habe bei notepad++ auf utf 8 umstellen können. jetzt werden umlaute im text dur E4 F6 und FC angezeigt. Im Browser hat sich aber leider immernoch nichts geändert..

                Verwendest du im PHP 'header()'?

                nein

                Wie wär’s denn mal, deine Seite zu verlinken?

                liegt auf internem apache..

                PS: Bitte keine Fullquotes!

                sorry, habs auch gemerkt als ich auf absenden geklickt hatte

                1. Hallo,

                  habe bei notepad++ auf utf 8 umstellen können. jetzt werden umlaute im text dur E4 F6 und FC angezeigt.

                  dann ändert Notepad++ offensichtlich nicht die schon vorhandenen Codes im Text, sondern interpretiert sie nur als UTF-8. Denn was du da angibst, sind die Codes der Umlaute in ISO-8859-x, die in UTF-8 ungültig sind (ein einzelnes Byte mit dem Wert >0x7F gibt's in UTF-8 nicht). Du müsstest nun also die Umlaute von Hand korrigieren.
                  Ich bin aber der Ansicht, dass du noch nicht die richtige Lösung gefunden hast; eigentlich sollte Notepad++ in der Lage sein, die Umcodierung automatisch zu machen - eventuell beim "Save As", so wie der Windows-eigene Notepad?

                  Im Browser hat sich aber leider immernoch nichts geändert..

                  Natürlich nicht, das Dokument ist ja auch noch identisch.

                  Wie wär’s denn mal, deine Seite zu verlinken?
                  liegt auf internem apache..

                  Lässt sich ändern ...

                  So long,
                   Martin

                  --
                  Datenbanken speichern keine User.
                  Das liegt daran, daß Datenbanken mit der Lebensmittelversorgung für gespeicherte biologische Lebensformen derzeit noch Probleme haben.
                    (Christoph Schnauß)
                  1. dann ändert Notepad++ offensichtlich nicht die schon vorhandenen Codes im Text, sondern interpretiert sie nur als UTF-8. Denn was du da angibst, sind die Codes der Umlaute in ISO-8859-x, die in UTF-8 ungültig sind (ein einzelnes Byte mit dem Wert >0x7F gibt's in UTF-8 nicht). Du müsstest nun also die Umlaute von Hand korrigieren.

                    Ja, hab auf Format --> UTF-8 geklickt.
                    Gibt aber auch Konvertieren in UTF-8, dann bleiben die Umlaute erhalten.

                    Natürlich nicht, das Dokument ist ja auch noch identisch.

                    wieso das? Habs doch konvertiert und META ist auch drin. Woran kanns denn noch hängen?

                    Wie wär’s denn mal, deine Seite zu verlinken?
                    liegt auf internem apache..

                    Lässt sich ändern ...

                    habe meinen neuen server erst gestern bestellt. Logindaten sind noch nicht eingetroffen (warum auch immer). wenn ich die hab kann ichs gerne hochladen..

                    1. PS: in der httpd.conf von xampp hab ich auch

                      AddDefaultCharset UTF-8

                      eingefügt.

                      Immernoch nichts :-(

                    2. Hallo,

                      Ja, hab auf Format --> UTF-8 geklickt.
                      Gibt aber auch Konvertieren in UTF-8, dann bleiben die Umlaute erhalten.

                      dann hättest du wohl genau *das* tun sollen.

                      Natürlich nicht, das Dokument ist ja auch noch identisch.
                      wieso das? Habs doch konvertiert und META ist auch drin. Woran kanns denn noch hängen?

                      Was nun? Hast du es konvertiert und neu gespeichert, oder nur mal als UTF-8 mit den beschriebenen Fehlern angesehen (also *nicht* umcodiert)?

                      Ciao,
                       Martin

                      --
                      Wenn die Amerikaner eines Tages von jeder Tierart ein Pärchen nach Cape Canaveral treiben ...
                      ja, DANN sollte man endlich misstrauisch werden.
                      1. Was nun? Hast du es konvertiert und neu gespeichert, oder nur mal als UTF-8 mit den beschriebenen Fehlern angesehen (also *nicht* umcodiert)?

                        habe es als ich es gefunden habe natürlich konvertiert und neu gespeichert. klappt trotzdem nicht

                  2. Ich bin aber der Ansicht, dass du noch nicht die richtige Lösung gefunden hast; eigentlich sollte Notepad++ in der Lage sein, die Umcodierung automatisch zu machen

                    Ja - es gibt die Möglichkeit nur das File anders zu interpretieren oder die Daten zu konvertieren.

                    Ersteres ist übrigens seit 5.4.5 defekt.

                  3. Wie wär’s denn mal, deine Seite zu verlinken?
                    liegt auf internem apache..
                    Lässt sich ändern ...

                    So, habe jetzt meinen Zugang erhalten. Hier

                    Das komische:
                    Wenn ich Text im HTML festlege (erster Satz auf der Homepage), werden die Umlaute richtig angezeigt.
                    Das Wort "Textbücher" wird aus der MySQL Datenbank abgerufen. Hier ird das ü nicht richtig angezeigt.

                    Die Tabelle der Datenbank hat folgende Eigenschaften:
                    Zeichencodierung der Datei: utf8
                    Kollation utf8_general_ci (latin1_swedish_ci war Standard. Weiß jemand wieso?)
                    Die Felder der Tabelle haben ebenfalls Kollation utf8_general_ci.

                    Wieso wird der MySQL-abgefragte Teil falsch dargestellt??

                    1. Hallo,

                      So, habe jetzt meinen Zugang erhalten. Hier

                      so, da wird's doch gleich viel konkreter.

                      1. Dein Server macht *gar keine* Angabe zum Encoding:
                         Content-Type: text/html

                      2. Ersatzweise gilt also die Inforamtion aus der meta-Angabe im HTML:
                         <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
                         Warum übrigens der Abschluss mit />? Schreibst du XHTML? Nichts deutet darauf hin.

                      3. Das HTML-Dokument enthält eine BOM (Byte Order Mark) am Anfang. Das kann
                         Probleme machen; speichere lieber als UTF-8 ohne BOM.

                      4. Der Textabschnitt "hä, dü schreibst döch kömisch" ist korrekt in UTF-8
                         codiert und wird daher auch richtig angezeigt.

                      5. Das darunterstehende Fragment "Textb?cher" enthält da, wo das "ü" sein
                         sollte, ein Byte mit dem Wert 0xFC. Das entspricht einem "ü" in ISO-8859-1,
                         ist aber für sich allein ungültig in UTF-8. Dieses Stück kommt also wohl
                         aus einer ISO-codierten Quelle.

                      Das Wort "Textbücher" wird aus der MySQL Datenbank abgerufen. Hier ird das ü nicht richtig angezeigt.

                      Die Tabelle der Datenbank hat folgende Eigenschaften:
                      Zeichencodierung der Datei: utf8
                      Kollation utf8_general_ci (latin1_swedish_ci war Standard. Weiß jemand wieso?)
                      Die Felder der Tabelle haben ebenfalls Kollation utf8_general_ci.

                      Ist der Text richtig in die Datenbank eingetragen? Und in welcher Codierung sprechen PHP und MySQL miteinander?

                      So long,
                       Martin

                      --
                      Ordnung schaffen heißt, das Eigelb vom Dotter zu trennen.
                        1. Dein Server macht *gar keine* Angabe zum Encoding:
                             Content-Type: text/html

                        habe jetzt im root eine .htacces mit folgendem Inhalt:
                        AddDefaultCharset UTF-8

                        1. Ersatzweise gilt also die Inforamtion aus der meta-Angabe im HTML:
                             <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
                             Warum übrigens der Abschluss mit />? Schreibst du XHTML? Nichts deutet darauf hin.

                        kein xhtml. / entfernt

                        1. Das HTML-Dokument enthält eine BOM (Byte Order Mark) am Anfang. Das kann
                             Probleme machen; speichere lieber als UTF-8 ohne BOM.

                        Keine BOM mehr drin.

                        1. Das darunterstehende Fragment "Textb?cher" enthält da, wo das "ü" sein
                             sollte, ein Byte mit dem Wert 0xFC. Das entspricht einem "ü" in ISO-8859-1,
                             ist aber für sich allein ungültig in UTF-8. Dieses Stück kommt also wohl
                             aus einer ISO-codierten Quelle.

                        Wie gesagt: bei phpmyadmin steht bei der Tabelle und den SPalten alles auf utf8_general_ci

                        Ist der Text richtig in die Datenbank eingetragen?

                        also in phpmyadmin werden ü ö und ä ganz normal angezeigt. hab ich über insert eingetragen. weiß nicht genau worauf du hier hinaus willst.

                        Und in welcher Codierung sprechen PHP und MySQL miteinander?

                        wo wird das festgelegt / kann ich das nachschauen?

                        Danke für die Hilfe!

                    2. @@bert:

                      nuqneH

                      So, habe jetzt meinen Zugang erhalten. Hier

                      Mit der Firefox-Extension Live HTTP headers lässt sich ganz einfach herausfinden, dass sein Server im HTTP-Header angibt: "Content-Type: text/html". Keine Zeichencodierung. (Solltest du ändern.)

                      Deshalb wirkt die Angabe im Dokument <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />

                      Dein Dokument ist unvollständig: keine http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=DOCTYPE-Angabe. Und du solltest dich entscheiden, ob du <http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML oder XHTML> schreiben willst.

                      Wenn man sich dein Dokument in einem Hex-Editor ansieht, sieht man:

                      (1) Am Anfang steht ein BOM. Sollte aber nicht.

                      (2) 'ä' wird durch die Byte-Sequenz C3 A4, 'ü' (in „dü“) durch C3 BC, 'ö' durch C3 B6 codiert. UTF-8 halt.

                      (3) Das 'ü' in „Textbücher“ wird durch das Byte FC codiert. Also nicht UTF-8. (In UTF-8 ist das Byte FC nicht erlaubt, deshalb erscheint '�'.)

                      Das Problem besteht also zwischen Auslesen des Textes aus der Datenbank und Einbau des Textes in dein HTML-Dokument.

                      Qapla'

                      --
                      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                      1. Mit der Firefox-Extension Live HTTP headers lässt sich ganz einfach herausfinden, dass sein Server im HTTP-Header angibt: "Content-Type: text/html". Keine Zeichencodierung. (Solltest du ändern.)

                        in root liegt eine .htaccess mit Inhalt "AddDefaultCharset UTF-8"

                        Dein Dokument ist unvollständig: keine http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=DOCTYPE-Angabe.

                        Ist jetzt drin.

                        Und du solltest dich entscheiden, ob du <http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML oder XHTML> schreiben willst.

                        HTML

                        (1) Am Anfang steht ein BOM. Sollte aber nicht.

                        Ist raus.

                        Das Problem besteht also zwischen Auslesen des Textes aus der Datenbank und Einbau des Textes in dein HTML-Dokument.

                        Wie löse ich das Problem? In der Datenbank selbst sind die ä ö und ü ganz normal dargestellt (bei Zugriff über phpmyadmin).

                        Danke für die Hilfe!

                        1. Wie löse ich das Problem? In der Datenbank selbst sind die ä ö und ü ganz normal dargestellt (bei Zugriff über phpmyadmin).

                          Nun, da es sowohl in der DB richtig steht und auch PHP ansich umlaute richtig ausgiebt bleibt ja nur noch eins übrig oder? :) Das Zwischen PHP und Tabelle... damit mein ich die MySQL-Verbindung.

                          mach mal im PHP Code : show variables
                          und schau dir dann z.b. "character_set_connection", "collation_connection" an.

                          Im Prinzip muss jede "character" und "collation" Einstellung auf UTF-8 sein. Zu Server haben auch Datenbank, Tabelle und Feld je eine eigene Einstellung.

                          mit :
                          mysql_query("SET NAMES 'utf8'", $sqlconnection);
                          mysql_query("set character_set_client=utf8;", $sqlconnection);
                          mysql_query("set character_set_connection=utf8;", $sqlconnection);
                          mysql_query("set character_set_results=utf8;", $sqlconnection);
                          mysql_query("set character_set_server=utf8;", $sqlconnection);
                          mysql_query("set collation_connection=utf8_general_ci;", $sqlconnection);
                          mysql_query("set collation_server=utf8_general_ci;", $sqlconnection);

                          kann man Notfalls zum Testen nachhelfen.

                          1. mach mal im PHP Code : show variables
                            und schau dir dann z.b. "character_set_connection", "collation_connection" an.

                            Meinst du "var_dump(get_defined_vars());"? Da werden "character_set_connection", "collation_connection" nicht angezeigt.

                            mysql_query("SET NAMES 'utf8'", $sqlconnection);
                            mysql_query("set character_set_client=utf8;", $sqlconnection);
                            mysql_query("set character_set_connection=utf8;", $sqlconnection);
                            mysql_query("set character_set_results=utf8;", $sqlconnection);
                            mysql_query("set character_set_server=utf8;", $sqlconnection);
                            mysql_query("set collation_connection=utf8_general_ci;", $sqlconnection);
                            mysql_query("set collation_server=utf8_general_ci;", $sqlconnection);

                            was macht das $sqlconnection da hinten?
                            Habe folgende Datei geöffnet:

                            mysql_connect($db_adress, $db_user, $db_password);  
                            mysql_select_db($db_db);  
                            $query =mysql_query("SET NAMES 'utf8'")or die(mysql_error());  
                            $query =mysql_query("set character_set_client=utf8;");  
                            $query =mysql_query("set character_set_connection=utf8;");  
                            $query =mysql_query("set character_set_results=utf8;");  
                            $query =mysql_query("set character_set_server=utf8;");  
                            $query =mysql_query("set collation_connection=utf8_general_ci;");  
                            $query =mysql_query("set collation_server=utf8_general_ci;");
                            

                            und keine error() Meldung bekommen. Also müsste es doch funktioniert haben, oder?

                            Zeigt aber immernoch keine Umlaute an.

                            Danke für die Hilfe!

                            PS: Meine Kenntnisse für MySQL-Befehle sind sehr überschaubar. Reicht gerade so zum abrufen, ändern und löschen von datensätzen. Daher weiß ich auch nichts mit dem $sqlconnection anzufangen.

                            1. PS: Meine Kenntnisse für MySQL-Befehle sind sehr überschaubar. Reicht gerade so zum abrufen, ändern und löschen von datensätzen. Daher weiß ich auch nichts mit dem $sqlconnection anzufangen.

                              Kein Problem, mysql_query() hat auch recht wenig mit MySQL zu tun.

                              resource mysql_query(string $query [,resource $link_identifier])

                              link_identifier
                              The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.

                            2. Hallo,

                              mach mal im PHP Code : show variables
                              und schau dir dann z.b. "character_set_connection", "collation_connection" an.
                              Meinst du "var_dump(get_defined_vars());"?

                              nein, da war der Hinweis "mach mal im PHP Code" wohl ausgesprochen irreführend. Es sollte natürlich heißen: Führe mal den SQL-Query aus (z.B. im PHPMyAdmin).

                              mysql_query("SET NAMES 'utf8'", $sqlconnection);
                              was macht das $sqlconnection da hinten?
                              PS: Meine Kenntnisse für MySQL-Befehle sind sehr überschaubar. Reicht gerade so zum abrufen, ändern und löschen von datensätzen. Daher weiß ich auch nichts mit dem $sqlconnection anzufangen.

                              Aber es sollte doch genügen, um mal die PHP-Funktion mysql_query() im Manual nachzuschlagen und festzustellen, dass man optional noch die zu verwendende SQL-Verbindung angeben kann, diese Angabe jedoch optional ist. Wenn sie weggelassen wird, nimmt PHP die letzte mit mysql_connect() geöffnete Verbindung.

                              Habe folgende Datei geöffnet:

                              mysql_connect($db_adress, $db_user, $db_password);

                              mysql_select_db($db_db);
                              $query =mysql_query("SET NAMES 'utf8'")or die(mysql_error());
                              $query =mysql_query("set character_set_client=utf8;");
                              $query =mysql_query("set character_set_connection=utf8;");
                              $query =mysql_query("set character_set_results=utf8;");
                              $query =mysql_query("set character_set_server=utf8;");
                              $query =mysql_query("set collation_connection=utf8_general_ci;");
                              $query =mysql_query("set collation_server=utf8_general_ci;");

                              
                              > und keine error() Meldung bekommen. Also müsste es doch funktioniert haben, oder?  
                                
                              Du fragst die Fehler ja gar nicht ab, außer beim ersten Statement. Aber nehmen wir mal an, es wären wirklich keine Fehler aufgetreten ...  
                                
                              
                              > Zeigt aber immernoch keine Umlaute an.  
                                
                              Kunststück. Was nützt es, wenn du in einem isolierten Testscript mal versuchsweise die Codierungen einstellst, in deinem eigentlichen Script aber alles unverändert lässt?  
                                
                              So long,  
                               Martin  
                              
                              -- 
                              Er:  Mit wem warst du gestern abend aus?  
                              Sie: Du bist mal wieder eifersüchtig wie immer!  
                              Er:  Wer ist Immer?  
                              
                              
                              1. mach mal im PHP Code : show variables
                                und schau dir dann z.b. "character_set_connection", "collation_connection" an.
                                Meinst du "var_dump(get_defined_vars());"?

                                nein, da war der Hinweis "mach mal im PHP Code" wohl ausgesprochen irreführend. Es sollte natürlich heißen: Führe mal den SQL-Query aus (z.B. im PHPMyAdmin).

                                mein Fehler, natürlich sollte es heissen, das du in deinem PHP Script (um das es gehst einmal:
                                mysql_query("show variables", $sqlconnection);

                                mysql_query("SET NAMES 'utf8'", $sqlconnection);
                                was macht das $sqlconnection da hinten?
                                Aber es sollte doch genügen, um mal die PHP-Funktion mysql_query() im Manual nachzuschlagen und festzustellen, dass man optional noch die zu verwendende SQL-Verbindung angeben kann, diese Angabe jedoch optional ist. Wenn sie weggelassen wird, nimmt PHP die letzte mit mysql_connect() geöffnete Verbindung.

                                Der "Link" zu Verbindung mag bei einer unwichtig sein, jedoch geh ich da gern sicher, ich wies nie, wann ich mal eine zweite öffne.

                                Habe folgende Datei geöffnet:

                                mysql_connect($db_adress, $db_user, $db_password);

                                mysql_select_db($db_db);
                                $query =mysql_query("SET NAMES 'utf8'")or die(mysql_error());

                                
                                > > Zeigt aber immernoch keine Umlaute an.  
                                > Kunststück. Was nützt es, wenn du in einem isolierten Testscript mal versuchsweise die Codierungen einstellst, in deinem eigentlichen Script aber alles unverändert lässt?  
                                  
                                Wie er schon schrieb, bringt das allein nichts. Du musst dies a) entweder in deinem Problemscript ausführen oder b) im Testscript Umlaute auslesen.  
                                Diese "Einstellungen" gelten nur während der aktiven Verbindung.  
                                  
                                Ich würde auch nicht einfach alle auf Verdacht ausführen, sondern wie schon geschrieben mit dem Mysql Befehl: "show variables;" einmal schauen was die Verbindung sagt. Jedoch bringt es herzlich wenig dies über phpMyAdmin auszulesen, da dieser eventuell schon zur Laufzeit daran rumgefummelt hat.  
                                
                                
                                1. Wie er schon schrieb, bringt das allein nichts. Du musst dies a) entweder in deinem Problemscript ausführen oder b) im Testscript Umlaute auslesen.
                                  Diese "Einstellungen" gelten nur während der aktiven Verbindung.

                                  Dachte das wird dann dauerhaft umgestellt, habe daher nicht darauf geachtet, dass es vor dem Abruf der Umlaute steht. Wenn ich das mache, dann werden die Umlaute richtig angezeigt!!

                                  mein Fehler, natürlich sollte es heissen, das du in deinem PHP Script (um das es gehst einmal:
                                  mysql_query("show variables", $sqlconnection);

                                  Wollte mir die Variablen ausgeben lassen, damit ich wie du schon sagst nicht immer auf gut Glück alle laufen lassen muss:

                                  echo mysql_fetch_assoc(mysql_query("show variables"));
                                  <--
                                  array
                                  -->

                                  $eko = mysql_fetch_assoc(mysql_query("show variables"));
                                  foreach($eko as $ekoo) { echo $ekoo."<br>"; }
                                  <--
                                  auto_increment_increment
                                  1
                                  -->

                                  :-(

                                  1. Hallo

                                    mein Fehler, natürlich sollte es heissen, das du in deinem PHP Script (um das es gehst einmal:
                                    mysql_query("show variables", $sqlconnection);

                                    Wollte mir die Variablen ausgeben lassen, damit ich wie du schon sagst nicht immer auf gut Glück alle laufen lassen muss:

                                    echo mysql_fetch_assoc(mysql_query("show variables"));
                                    <--
                                    array
                                    -->

                                    Es wird eine Zeile mit mysql_fetch_assoc ausgegeben. Läuft also, wie gewollt.

                                    $eko = mysql_fetch_assoc(mysql_query("show variables"));

                                    Es wird eine Zeile von mysql_fetch_assoc an $eko übergeben. Läuft also, wie gewollt.

                                    foreach($eko as $ekoo) { echo $ekoo."<br>"; }
                                    <--
                                    auto_increment_increment
                                    1
                                    -->

                                    Es wird die *eine* übergebene Zeile in einer Schleife ausgegeben. Läuft also, wie gewollt.

                                    :-(

                                    Tja, wenn du mehrere Ergebinszeilen ausgeben willst, solltest du die auch alle durchlaufen. Da du typischerweise nicht weißt, um wieviele Ergebniszeilen es geht, machst du das in einer Schleife.

                                    $eko = mysql_query("show variables");  
                                    while ($row = mysql_fetch_assoc($eko)) {  
                                    echo $row["..."].", ".$row["...."];  
                                    }
                                    

                                    Tschö, Auge

                                    --
                                    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                                    Terry Pratchett, "Wachen! Wachen!"
                                    Veranstaltungsdatenbank Vdb 0.3
                                    1. Danke, so klappts.
                                      Ergebnis:

                                      --------------
                                      character_set_client
                                      latin1
                                      character_set_connection
                                      latin1
                                      character_set_database
                                      latin1
                                      character_set_filesystem
                                      binary
                                      character_set_results
                                      latin1
                                      character_set_server
                                      latin1
                                      character_set_system
                                      utf8
                                      collation_connection
                                      latin1_swedish_ci
                                      collation_database
                                      latin1_german2_ci
                                      collation_server
                                      latin1_german2_ci
                                      -------------

                                      Wenn ich character_set_results von latin1 auf utf8 stelle klappts ja, aber kann ich das ganze mit phpmyadmin auch irgendwie generell auf uft8 stellen? sonst muss ich ja jedes mal den beim connecten den befehl losschicken.

                                      1. Wenn ich character_set_results von latin1 auf utf8 stelle klappts ja, aber kann ich das ganze mit phpmyadmin auch irgendwie generell auf uft8 stellen? sonst muss ich ja jedes mal den beim connecten den befehl losschicken.

                                        Nun dacht ich mir, das es das ist.

                                        Du wirst lachen, aber der phpMyAdmin läuft mit UTF-8^^ ... zu ministens glaube ich das das die Standarteinstellung ist.

                                        Denke mal du wirst da die "mysql.ini" bemühen müssen.

                                        1. Hallo

                                          Wenn ich character_set_results von latin1 auf utf8 stelle klappts ja, aber kann ich das ganze mit phpmyadmin auch irgendwie generell auf uft8 stellen? sonst muss ich ja jedes mal den beim connecten den befehl losschicken.

                                          Du wirst lachen, aber der phpMyAdmin läuft mit UTF-8^^ ... zu ministens glaube ich das das die Standarteinstellung ist.

                                          Was bei phpMyAdmin eingestellt ist, interessiert aber ein anderes Skript, mit seinen eigenen Verbindungen zum DB-Server, nicht.

                                          Denke mal du wirst da die "mysql.ini" bemühen müssen.

                                          Jein, auf dem eigenen Server kann er machen, was geht. Auf einem Shared Hosting Angebot geht das typischerweise nicht. Dort muss er bei *jeder* Verbindungsaufnahme den Charset bestimmen. Dazu reicht dann, wie schon angemerkt, "SET NAMES utf-8" aus. Bei den mysqli-Funktionen, so er sie benutzt, gibt es dazu auch eine Alternative, die das mit einer PHP-Funktion erledigt.

                                          Tschö, Auge

                                          --
                                          Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                                          Terry Pratchett, "Wachen! Wachen!"
                                          Veranstaltungsdatenbank Vdb 0.3
                                          1. Du wirst lachen, aber der phpMyAdmin läuft mit UTF-8^^ ... zu ministens glaube ich das das die Standarteinstellung ist.
                                            Was bei phpMyAdmin eingestellt ist, interessiert aber ein anderes Skript, mit seinen eigenen Verbindungen zum DB-Server, nicht.

                                            Genau das hab ich Versucht Ihm damit zu vermitteln.

                                            Denke mal du wirst da die "mysql.ini" bemühen müssen.
                                            Jein, auf dem eigenen Server kann er machen, was geht. Auf einem Shared Hosting Angebot geht das typischerweise nicht. Dort muss er bei *jeder* Verbindungsaufnahme den Charset bestimmen. Dazu reicht dann, wie schon angemerkt, "SET NAMES utf-8" aus. Bei den mysqli-Funktionen, so er sie benutzt, gibt es dazu auch eine Alternative, die das mit einer PHP-Funktion erledigt.

                                            Naja, wenn er es "Generell" ändern möchte, MUSS er die mysql.ini verändern, wenn er das nicht kann, kann er es auch nicht permanent ändern, darauf war meine Aussage bezogen.

                                            Am einfachsten ist es dann natürlich die Verbindung an einer zentralen Stelle aufzubauen und dann entsprechend utf-8 einzustellen.

                                            Was reicht und was nicht, damit hab ich leider nur wenig Erfahrungen, im allgemeinen läuft laufen auf unseren älteren Webservern (ohne php5, deshalb auch kein MySQLi) kaum seiten mit UTF-8, deshalb läuft der SQL Server auch ohne, jedoch bin ich damals bei einer Seite so verzweifelt, das ich schlicht und ergreifend alles umgestellt habe :).

                                            1. Hi!

                                              Was reicht und was nicht, damit hab ich leider nur wenig Erfahrungen, im allgemeinen läuft laufen auf unseren älteren Webservern (ohne php5, deshalb auch kein MySQLi) kaum seiten mit UTF-8, deshalb läuft der SQL Server auch ohne, jedoch bin ich damals bei einer Seite so verzweifelt, das ich schlicht und ergreifend alles umgestellt habe :).

                                              PHP4 kann wie PHP5 problemlos auch mit der mysql-Extension UTF-8 mit dem MySQL-Server[*] sprechen. Wie immer müssen dazu zwei Dinge beachtet werden: die Verbindungskodierung und die Kodierung der einzelnen Felder.

                                              Die Verbindungskodierung stellt man idealerweise mit mysql(i)_set_charset() ein (erhältlich ab 5.0.5 für mysqli und 5.2.3 für mysql). Ersatzweise kann man für die ISO-8859-Familie und UTF-8 auch ein SET NAMES-Statement abschicken.

                                              [*] MySQL-Version 4.1 und größer vorausgesetzt. Bis Version 4.0 kann man zwar UTF-8-kodierte Daten speichern und abrufen, MySQL behandelt sie dann aber intern wie Latin1 (oder was grad als Default-Kodierung eingestellt ist).

                                              Lo!

                          2. Hi!

                            mysql_query("SET NAMES 'utf8'", $sqlconnection);
                            mysql_query("set character_set_client=utf8;", $sqlconnection);
                            mysql_query("set character_set_connection=utf8;", $sqlconnection);
                            mysql_query("set character_set_results=utf8;", $sqlconnection);
                            mysql_query("set character_set_server=utf8;", $sqlconnection);
                            mysql_query("set collation_connection=utf8_general_ci;", $sqlconnection);
                            mysql_query("set collation_server=utf8_general_ci;", $sqlconnection);

                            Nicht übertreiben! Ein SET NAMES utf8 reicht völlig. (Die Anführungszeichen um utf8 können auch weg.)

                            Lo!

      2. @@anna22:

        nuqneH

        also die Umlaute aus MySQL nach Abfrage durch &uuml; ersetzt. Im Div klappts.

        (1) Das heißt also, die Texte stehen richtig in der Datenbank drin und kommen auch richtig aus ihr heraus?

        (2) 'ü' sollte nicht durch '&uuml;' ersetzt werden. Es ist dafür zu sorgen, dass der Server die richtige Zeichencodierung angibt.

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)