[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Woody: Postgres: Kann keine INSERTs mit Umlauten durchfuehren (2)



* Holger Rauch <Holger.Rauch@heitec.de> [21 05 02 08:55]:

>Hallo Eckhard!
>
>On Fri, 17 May 2002, Eckhard Hoeffner wrote:
>
>> [...]
>> Wahrscheinlich läuft psql nicht mit dem richtigen encoding: 
>> 
>> \encoding [latin1 | unicode]
>> 
>> sollte helfen.
>
>Danke für den Tip. \encoding war auf UNICODE. Nahchdem ich "\encoding
>latin1" aufgerufen habe, ging's dann. Mich wundert nur, warum es mit
>UNICODE encoding *nicht* funktioniert. Habe PostgreSQL 7.1.3 auf einem
>SuSE-System laufen. Dort funktionieren INSERTs mit Umlauten auch mit
>UNICODE encoding. Oder hat sich da von 7.1.3 auf 7.2.1 was grundlegendes
>geändert? 

Nicht das isch wüßte. Nochmal - es gibt einen Unterschied wie die
Daten in der Datenbank gespeichert werden und wie Sie in dem
Interface angezeigt werden. Mit dem \encoding latin1 wird zwischen
dem DBMS und psql vereinbart, dass 
- die Eingaben von psql an das DBMS und
- die Ausgabe des DBMS an psql in latin1 erfolgen. 

Das hat nichts damit zu tun, wie die Daten dann tatsächlich in der
Datenbank gespeichert werden. Bemerkbar macht sich eine andere Art
der Speicherung etwa bei der Sortierung. Wenn das DBMS unter ASCII
läuft, wird einfach nach ASCII sortiert, also etwa Zahlen vor
Buchstaben (groß/klein getrennt) und dann Sonderzeichen. Wenn das
DBMS unter ASCII läuft, heißt das aber nicht, dass du keine
Sonderzeichen eingeben kannst (obwohl in ASCII nicht enthalten). 
Lies mal zu dieser Frage:
/usr/share/doc/postgresql-doc/html/charset.html

>
>> Ich kann z.B. ein € in die Datenbank eingeben und
>> kriege das nicht nur in psql angezeigt, sondern auch im Browser
>> (allerdings erst, nachdem ich dort encoding auf 8859-15 umgestellt
>> habe). psql läuft in diesem Fall mit latin1.
>
>Sorry, das verstehe ich nicht. Wie kannst Du auf 8859-15 umstellen, wenn
>psql mit latin1 läuft?
Ich habe beim Browser auf 8859-15 umgestellt. 

Normalerweise benutze ich &euro; für die Darstellung des € in HTML.
Außerdem würde ich normalerweise auch keinen € in die Datenbank
eingeben, weil ich nicht wüßte wozu.

Ich habe nun € mit latin1-encoding eingegeben. Er wird, weil mein
Terminal auf 8859-15 läuft, auch als € angezeigt. Das liegt daran,
dass das encoding nur Einfluss auf den Datenaustausch zwischen DBMS
und dem Interface hat. 

Wenn Du z.B. in unicode arbeiten willst, musst du ein Terminal in
unicode benutzen (uxterm). Dann kannst du \encoding unicode eingeben
und das DBMS erfasst Eingaben als unicode und sendet unicode zurück.
und dann funktionieren auch wieder die Sonderzeichen. 



-- 
--//--\\--
Eckhard Hoeffner
e-hoeffner@fifoost.org
Tal 44 
D-80331 München


--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-request@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)



Reply to: