Hallo,
bin vor etwa 3 Monaten von MySQL auf PostGreSQL umgestiegen.
Dabei habe ich aber nun ein Problem mit den localen. Als ich Postgresql via deb Package installiert hatte, war im System als locale “en_US.ISO-8859-15” eingestellt.
Von meinem Projekt sind alle PHP Dateien in UTF-8 codiert. Die Datenbank, welche ich erstellt habe, habe ich UTF-8 als Kodierung ausgewählt. Nun hatte ich das Problem in PHP, dass mir die PHP Funktion strtolower() alle Umlaute verschwinden hat lassen. So bin ich auf die Idee gekommen und hab die System locale auf “de_DE.UTF-8” verändert. Nun hatte ich das Problem mit PHP nicht mehr.
Aber meine PostGresQL Datenbank lässt mir bei folgender SQL auch die Umlaute verschwinden:
SELECT LOWER(name) FROM allys
Somit sind bei der Spalte name alle Umlaute weg.
Ich habe nun im Internet folgendes gefunden:
http://www.postgresql.org/files/documentation/books/pghandbuch/html/charset.html#LOCALE
Bei einigen Locale-Kategorien steht der Wert für die gesamte Lebensdauer des Datenbankclusters fest. Das heißt, nachdem initdb ausgeführt wurde, dann können Sie ihn nicht mehr verändern. Diese Kategorien sind LC_COLLATE und LC_CTYPE.
Muss ich nun wirklich meine komplette Datenbank löschen, um die Variablen “lc_*” ändern zu können.?
Was ist, wenn ich nun auch chinesische Zeichen verwenden werde, kann ich dann weiterhin noch “de_DE.UTF-8” verwenden?
Danke im Vorraus.