Karlson vom Dach: Umlaute bei 1&1 werden nicht angezeigt

Hallo alle zusammen,

Meine Datenbank:

(von phpmyadmin)

test-tabelle1                 utf8_general_ci
test-tabelle2                 utf8_general_ci
----------------------------------------------------
2 Tabellen Gesamt  1.141 --   latin1_german1_ci

Das zeigt er mir im phpmyadmin an. Wenn ich nun versuche die Tabellen abzufragen per PHP fehlen die Umlaute.

So wird eben ausgegeben:
übelster test

anstelle von
übelster test

Die Datenbank hat noch Umlaute, wenn ich Sie downloade über phpmyadmin so hat sie keine Umlaute mehr.

Ganz offensichtlich haben die Tabellen utf8, die gesamte Datenbank wird aber als latin1_german1_ci angesprochen, was dann natürlich zu den Problemen führt.
per sql habe ich mit charset utf8 eingestellt.

Ich werde nun testweise die Tabellen als latin1 anlegen, dann wird es klappen, aberhttp://de.wikipedia.org/wiki/UTF-8 utf8 hat natürlich seine Vorteile.
Gut möglich, das ich bei 1&1 weniger Rechte habe um dergleichen zu ändern.

  1. Hallo,

    test-tabelle1                 utf8_general_ci
    test-tabelle2                 utf8_general_ci

    2 Tabellen Gesamt  1.141 --   latin1_german1_ci

    Das zeigt er mir im phpmyadmin an.

    wer ist "er"?

    Wenn ich nun versuche die Tabellen abzufragen per PHP fehlen die Umlaute.

    So wird eben ausgegeben:
    übelster test

    Offensichtlich sind die Daten in der DB in UTF-8 codiert, du verkaufst sie dem Browser aber anscheinend als ISO-8859-1 oder etwas Verwandtes.

    Ich werde nun testweise die Tabellen als latin1 anlegen, dann wird es klappen, aberhttp://de.wikipedia.org/wiki/UTF-8 utf8 hat natürlich seine Vorteile.

    Besser wäre, die Verarbeitung in UTF-8 zu belassen, und dem Browser nur die richtige Codierung anzugeben. Wenn du sowieso PHP einsetzt, könntest du den richtigen HTTP-Header mit der Funktion header() setzen; die AddDefaultCharset-Direktive in einer .htaccess-Datei wäre ebenfalls eine Möglichkeit.

    Gut möglich, das ich bei 1&1 weniger Rechte habe um dergleichen zu ändern.

    Was die Verwendung einer .htaccess-Konfigurationsdatei angeht, weiß ich es nicht; aber von PHP aus hast du auf jeden Fall alle Möglichkeiten.

    Ciao,
     Martin

    --
    Most experts agree: Any feature of a program that you can't turn off if you want to, is a bug.
    Except with Microsoft, where it is just the other way round.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      test-tabelle1                 utf8_general_ci
      test-tabelle2                 utf8_general_ci

      2 Tabellen Gesamt  1.141 --   latin1_german1_ci

      Das zeigt er mir im phpmyadmin an.

      wer ist "er"?

      Der Computer :)

      Quelltext der Website gibt oben aus:
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

      Also von daher passt alles, das besagt folgendes
      1. ich habe selfhtml gelesen
      2. ich habe gegoogelt
      3. ich habe hier richtig zitiert
      4. ich habe irgendwo einen fehler
      5. wenn phpmyadmin bei den Tabellen anzeigt "utf8" und unten im Gesamt "latin1", so wird das wohl der Fehler sein, das bedeutet
      6a) ich werde googeln und den Fehler finden
      6b) ich werde die Tabellen als latin1 speichern und werde nie wissen an was es lag.

      1. Hi,

        Quelltext der Website gibt oben aus:
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        Und was sagt der wichtigere HTTP-Header?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Hi,

          Quelltext der Website gibt oben aus:
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

          Und was sagt der wichtigere HTTP-Header?

          <!DOCTYPE html>
          <html lang="de">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

          1. Hi,

            Quelltext der Website gibt oben aus:
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

            Und was sagt der wichtigere HTTP-Header?

            <!DOCTYPE html>
            <html lang="de">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

            Das ist kein HTTP, das ist HTML.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
            1. Und was sagt der wichtigere HTTP-Header?

              HTTP/1.1 200 OK
              Date: Fri, 03 Feb 2012 13:48:43 GMT
              Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r
              X-Powered-By: PHP/5.2.17
              Expires: Thu, 19 Nov 1981 08:52:00 GMT
              Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
              Pragma: no-cache
              Cache-Control: max-age
              Connection: close
              Content-Type: text/html;charset=utf-8

      2. Tach!

        test-tabelle1                 utf8_general_ci
        test-tabelle2                 utf8_general_ci

        2 Tabellen Gesamt  1.141 --   latin1_german1_ci

        1. wenn phpmyadmin bei den Tabellen anzeigt "utf8" und unten im Gesamt "latin1", so wird das wohl der Fehler sein, das bedeutet

        Das bedeutet erstmal gar nichts. Die Angabe bei der Datenbank ist ein Default-Wert für neu anzulegende Tabellen, wenn dabei keine explizite Angabe gemacht wurde. Der Wert bei den Tabellen ist wiederum nur ein Defaultwert für neu anzulegende Felder, wenn dabei keine explizite Angabe gemacht wurde. Lediglich die Einstellung der einzelnen Felder ist relevant für die Kodierung, die MySQL _zum_Speichern_ verwendet. Zum Kommunizieren mit Clients wird die auf der Verbindung ausgehandelte Kodierung verwendet. Wenn du nichts aushandels, wird ein Defaultwert verwendet, der möglicherweise nicht zu deinen Erwartungen passt. Jedenfalls kodiert MySQL zwischen der jeweiligen Feldkodierung und der Verbindungskodierung um, wenn das notwendig ist. Das wichtigste beim Arbeiten mit MySQL ist also, dass du nach dem Verbindungsaufbau angibst, welche Kodierung du zu verwenden wünschst.

        Genaueres im Wiki: Themenschwerpunkt Zeichenkodierung. Dort steht nicht nur etwas über MySQL sondern auch wie das Zusammenspiel zwischen Webserver, Dokumenten und dem Browser diesbezüglich funktioniert.

        dedlfix.

    2. Tach!

      So wird eben ausgegeben:
      übelster test
      Offensichtlich sind die Daten in der DB in UTF-8 codiert, [...]

      Was in der Datenbank kodiert ist, ist nicht so einfach feststellbar, da sich diese wie eine Blackbox verhält. Wenn man übelste Zeichen beim Abfragen bekommt, ist das lediglich ein Indiz für die auf der Verbindung zum Client verwendete Kodierung.

      dedlfix.

  2. Tach,

    Das zeigt er mir im phpmyadmin an. Wenn ich nun versuche die Tabellen abzufragen per PHP fehlen die Umlaute.

    hast du der Mysql-Verbindung auch mittgeteilt, dass du UTF-8 sprechen möchtest: http://wiki.selfhtml.org/wiki/Themen:Zeichencodierung/MySQL?

    mfg
    Woodfighter