utf8 Problem bei pdo (postgres)
Twilo
- php
0 André Laugks0 Twilo0 André Laugks0 Twilo0 André Laugks0 Twilo
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
Hallo!
Das Ergbnis bleibt jedoch das Selbe, ein Ü wird als Ãœ eingetragen.
Welches Encoding hat den die Datenbank?
André Laugks
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
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
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
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
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
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