RadioDB Beta 2

Ist ein Unicode-Problem, und wurde soeben von mir behoben. Geht dann in 1.5.23.
Nee, geht leider nicht... :-(

@cevou: Sag mal, kannst du noch einbauen, dass auch die Art des Endes aus der eldoDB importiert wird? Also F für Fade, C für Cold End und CF für eine Mischung.

@cevou: Sag mal, kannst du noch einbauen, dass auch die Art des Endes aus der eldoDB importiert wird? Also F für Fade, C für Cold End und CF für eine Mischung.

Geht klar Boss :slight_smile:

Okay, ich bin gespannt… :smiley:

Nee, geht leider nicht... :-(

Guck mal bitte in deine Registry (mit regedit) und sag mir, welcher Wert unter
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage für “ACP” eingetragen ist.

mAirList versucht automatisch, den benötigten PostgreSQL-Zeichensatz zu ermitteln (anhand des Windows-Zeichensatzes), allerdings gibt es unter Windows über 100 verschiedene Codepages, und ich hatte keine Lust, die alle aufzuführen :wink:

Torben

Da steht “1252”…

Steht bei mir auch, und bei mir werden nun auch die Umlaute angezeigt. Komisch.

Mach mal das hier:

  • PostgreSQL-Konsole (psql starten.
  • Dort eingeben: SET CLIENT_ENCODING TO ‘LATIN1’;
  • Dann SELECT * FROM “Interpreten” WHERE “Interpret” LIKE “Ali%”;

Sieht Alizée dann ok oder kaputt aus?

Torben

Besser wäre:
SELECT * FROM interpret WHERE “Interpret” LIKE ‘Ali%’;

Aber SOnderzeichen werden trotzdem nicht richtig dargestellt. Ich guck mal ob ich da was von meiner Seite machen kann damit wir das richtig bekommen!

Oops, ja, das Query hatte ich gerade mal eben so da hingeschrieben :wink:

Ich fasse nochmal eben zusammen, was gegeben sein muss, damit die Umlaute richtig angezeigt werden:

  • Die PostgreSQL-Datenbank (meist “radiodb”) muss mit dem Encoding “UTF8” angelegt sein. Ob das so ist, kann man herausfinden, wenn man psql startet und “\l” eingibt:

radiodb=# \l List of databases Name | Owner | Encoding ------------+----------+----------- postgres | postgres | UTF8 radiodb | tw | UTF8 ...

Damit ist schonmal sichergestellt, dass PostgreSQL die Umlaute so erkennt, wie sie radioDB da reinschreibt. Auf meinem Linux-PostgreSQL scheint das default zu sein. Wie es unter Windows ist, weiß ich nicht. Ist das bei dir so, Agent?

  • Zweitens muss der Client - hier mAirList - das richtige “Ausgabe-Encoding” setzen. Dieses muss der in Windows eingestellten Codepage entsprechen. Leider benutzt Windows ganz andere Bezeichner für die Codepages, so dass mAirList eine kleine Umrechnungstabelle Codepage->Encoding eingebaut hat. Natürlich habe ich da zunächst nicht alle 100 Codepages aufgenommen, aber 1252 steht in jedem Fall drin, und wird zum PostgreSQL-Encoding “WIN1252”.

Hier gibt es eine Liste aller Encodings: http://www.postgresql.org/docs/current/static/multibyte.html

Ich werde für die nächste Version einbauen, dass man das Encoding auch von Hand in der Config eintragen kann. Dann ist man nicht mehr auf die automatische Erkennung angewiesen, sondern muss nur noch sicherstellen, dass die Datenbank auch als “UTF8” erzeugt wurde (s.o.).

Torben

Hallo Torben,

bei mir steht da statt UTF8 leider SQL_ASCII. Hängt das evtl. mit dem MySql-Import zusammen? Was machen wir denn da?

Dann musst du vermutlich die Datenbank einmal löschen und neu anlegen, und zwar mit dem Parameter “-E UTF8”:

dropdb radiodb createdb -E UTF8 radiodb

Natürlich gehen dabei deine Daten verloren. Entweder musst du also deinen MySQL-Import nochmal durchführen, oder aber du legst dir vorher mit pg_dump eine Sicherung an, die du dann in die neue Datenbank wieder einspielst. Tabellenrechte setzen nicht vergessen.

Sorry, das ist jetzt ziemlich blöd für dich, das gebe ich zu. Aber uns war das Problem wohl vorher nicht bewusst. Du bist nun der erste, der dran glauben muss …

cevou, kannst du sicherstellen, dass die radioDB nach dem Connect IMMER den Befehl

SET CLIENT_ENCODING TO 'UTF8'

zum Server schickt? Nur so kannst du sicherstellen, dass deine Unicode-Daten auch tatsächlich richtig vom Server verarbeitet werden. Sollte nämlich jemand zufällig ein anderes Encoding als UTF8 verwenden (z.B. LATIN1), wandelt PostgreSQL dann alles automatisch um und beim Einspielen in mAirList auch wieder ins richtige Format. Leider ist SQL_ASCII so ziemlich das einzige Encoding, das überhaupt nicht mit Sonderzeichen umgehen kann. Es speichert einfach alles 1:1 und vergisst dabei, mit welchem Encoding die Daten seinerzeit angeliefert wurden.

Torben

Dann musst du vermutlich die Datenbank einmal löschen und neu anlegen, und zwar mit dem Parameter "-E UTF8":

dropdb radiodb createdb -E UTF8 radiodb

Natürlich gehen dabei deine Daten verloren. Entweder musst du also deinen MySQL-Import nochmal durchführen, …


Sorry, so fit bin ich dann doch nicht, kannst du mir da noch mal Schritt für Schritt erklären, wie das geht? Läuft das über die Kommandozeile von postgres?
Sowohl das Löschen als auch Anlegen hab ich bisher über die Radio Datenbank.exe gemacht.

Dann musst du vermutlich die Datenbank einmal löschen und neu anlegen, und zwar mit dem Parameter "-E UTF8":

dropdb radiodb createdb -E UTF8 radiodb


Wenn ich das über die Befehlszeile mache, fragt er mich ständig nach dem Passwort für den Administrator-Account, akzeptiert mein Passwort aber nicht… :?

cevou, kannst du helfen? Ich hab mit dem Windows-PostgreSQL keine Erfahrung. (Unter Linux würde man “su - postgres” machen und käme dann ganz ohne Passwort rein.)

Torben

Geh in pgAdmin und erstelle eine neue Datenbank (rechtsklick auf Datenbanken -> neue Datenbank) und Stelle bei Kodierung UTF8 ein!

So, ich habe Postgresql jetzt komplett neu installiert. Schon bei der Installation kann man die Art der Codierung auswählen und da hab ich diesmal UTF8 gesetzt. Damit hat’s dann geklappt, alles wird jetzt automatisch richtig angezeigt. Also wer Postgresql installiert, sollte darauf achten, diese Einstellung bei der Installation zu setzen.

Wenn es jetzt noch möglich wird, dass man aus mAirList in die radiodb speichern kann und dass die Art des Endes noch aus der eldodb importiert wird, dann wird die eldodb in den Ruhestand versetzt. :wink:

Das mit den Enden geht jetzt schon bei mir. Ich bin nur grade noch an einem Bug dran dann gibts ne Beta 2.2

Hallo cevou,

so langsam dringe ich in die Tiefen deiner komfortablen Datenbankverwaltung vor. Ich würde mir noch sehr wünschen, dass man beim Erstellen von Stundenuhren den Musikelementen Fix-Zeiten und Farben zuweisen kann wie in mAirList. Das gleiche gilt für die Dummy-Informationen.
Das wäre echt wunderbar, vielleicht kannst du das ja realisieren.

Das sollte relativ einfach zu machen sein! Ich werde es auf meine ToDo-Liste setzten.

Klasse! Danke! :smiley:

Hallo,

was muss ich bei mAirList, bei der Datenbankverbindung eingeben?

Danke,

Thomas