Twilo: utf8 Problem bei pdo (postgres)

Hallo,

Umlaute etc. werden falsch in der Datenbank eingetragen

nach etwas längerer google-Suche hatte ich folgendes gefunden

$pdo->query("SET NAMES 'UTF8';");  
$pdo->query("SET CLIENT_ENCODING TO 'UTF8';");

und

mb_internal_encoding('UTF-8');  
mb_regex_encoding('UTF-8');

Das Ergbnis bleibt jedoch das Selbe, ein Ü wird als Ãœ eingetragen.

Woran könnte das noch liegen?

mfg
Twilo

  1. Hallo!

    Das Ergbnis bleibt jedoch das Selbe, ein Ü wird als Ãœ eingetragen.

    Welches Encoding hat den die Datenbank?

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!
    1. Hallo,

      Das Ergbnis bleibt jedoch das Selbe, ein Ü wird als Ãœ eingetragen.

      Welches Encoding hat den die Datenbank?

      ist es das, was du wissen möchtest?

      Datenbank     Besitzer     Codierung     Tablespace    Aktionen    Kommentar
      user          postgres     SQL_ASCII     pg_default

      wenn nein, wie kann ich das abfragen?

      mfg
      Twilo

      1. Hallo!

        Welches Encoding hat den die Datenbank?

        ist es das, was du wissen möchtest?

        Das ist doch meine Frage!

        wenn nein, wie kann ich das abfragen?

        SHOW server_encoding;

        André Laugks

        --
        Die Frau geht, die Hilti bleibt!
        1. Hallo,

          wenn nein, wie kann ich das abfragen?

          SHOW server_encoding;

          SQL_ASCII

          welche Möglichkeiten habe ich bei postgres, um das zu ändern?

          bei mySQL kann ich meines Wissens den Charset per phpMyAdmin ändern. Gibt es so eine Möglichkeit auch bei postgres?

          In phpPgAdmin habe ich bis jetzt noch nichts gefunden.
          Wenn ich bei pgAdmin III auf die Datenbank klicke, sehe ich in den Eigenschaften die Kodierung, kann sie jedoch nicht ändern, da das Feld deaktiviert ist.

          mfg
          Twilo

          1. Hallo!

            SHOW server_encoding;

            SQL_ASCII

            welche Möglichkeiten habe ich bei postgres, um das zu ändern?

            Hast Du schon viele Daten in der Datenbank? Wenn nicht, exportiere nur das Schema.

            Für alle Fälle noch noch ein gesamtes Backup der ursprünglichen Datenbank. Besser ist mit -Ft.

            pg_dump -c -Ft -d <datenbank> -U <user> > datenbank.sql

            Versuche mal die Datenbank als UTF-8 zu exportieren (-E, --encoding=ENCODING  dump the data in encoding ENCODING). Keine Ahnung ob das funktioniert, ich habe das nie probiert.

            Schema als als UTF-8 exportieren. Schaue mal in die Datei rein, was dort als Encoding gesetzt ist.

            pg_dump -s -E UTF-8 -d <datenbank> -U <user> > schema_utf.sql

            Datenbank als UTF-8 exportieren. Besser ist mit -Ft.

            pg_dump -c -Ft -E UTF-8 -d <datenbank> -U <user> > datenbank_utf.sql

            Datenbank löschen.

            DROP DATABASE <datenbank>;

            Datenbank anlegen mit Encoding UTF-8.

            CREATE DATABASE <datenbank> WITH ENCODING = 'UTF-8';

            Nun importierst Du das Schema oder die gesamte Datenbank.

            pg_restore -d <datenbank> -U <user> < datenbank_utf.sql

            Wenn Du schon Trigger oder ForeignKeys angelegt hast, mußt Du die Parameter "-X" und "-S postgres" hinzunehmen. Damit schaltest Du Sie während des Imports aus.

            André Laugks

            --
            Die Frau geht, die Hilti bleibt!
            1. Hallo,

              [...]
              Wenn Du schon Trigger oder ForeignKeys angelegt hast, mußt Du die Parameter "-X" und "-S postgres" hinzunehmen. Damit schaltest Du Sie während des Imports aus.

              danke, ich werde das morgen mal probieren, wenn ich "droppen und createn ;-)" darf, und berichten

              Trigger gibt es keine
              Es gibt aber ForeignKeys und Sequenzen

              ps. haben diese Sequenzen irgendwelche Vorteile/Nachteile gegenüber das auto inkrement von mySQL?

              pps. meine ersten Gehversuche mit postgres sind ziemlich wackelig :-)

              mfg
              Twilo

              1. Hallo!

                ps. haben diese Sequenzen irgendwelche Vorteile/Nachteile gegenüber das auto inkrement von mySQL?

                Nein! Squenezen haben in dem Sinne keine Vor- und Nachteile.

                Sie haben in dem Sinne Vorteile, dass man Sie manipulieren kann. Man kann zum Beispiel über "inkrement" einen Wert angeben, um die die Squence erhöht wird. Bei einem Minuswert, wird Sie sogar herunter gezählt. Es kann über "cycle" angebenen werden, ob die Sequence bei "minvalue" wieder beginnt zu zählen, wenn "maxvalue" erreicht ist.

                Mehrere Tabellen können eine Sequence nutzen. Das nutze ich zum Beispiel.

                http://www.postgresql.org/docs/8.2/interactive/sql-createsequence.html
                http://www.postgresql.org/docs/8.2/interactive/functions-sequence.html

                André Laugks

                --
                Die Frau geht, die Hilti bleibt!