FEHLER: ungültige UTF-8-Sequenz in der Nähe von Byte 0xfc entdeckt
herum.
Kam auf ein insert statement.
insert into [tabellenname] (
name
,content
,ts_content
) VALUES (
'einName'
, '[neMengeContent]'
, to_tsvector('default', '[derZuIndizierendeRamsch]')
)
Das ganze wird mit einem Script unter SUSE ausgeführt.
Ich hab das INSERT-Statement mal ausgeben lassen, genommen und mit phpPgAdmin ausprobiert.
Da hat es funktioniert.
Ich hab grad so gar keine Ahnung wo ich anfangen soll zu suchen.
Die Frage wäre ob ich das irgendwie herausfinden kann.
Ich mein, vieleicht kann ich PG ja sagen, dass das kein UTF8 sein soll oder die Zeichen, die utf8 ausmachen irgendwie filtern und durch belanglose ersetzen.
EDIT:
Die Codierung der DB ist utf8
Kann man die Codierung im nachhinein noch ändern?
Die “client_encoding” gibt das Betriebssystem vor, auf dem der Client läuft und ist der Zeichensatz, der in der Localen des Betriebssystems eingestellt ist.
Nur hast Du dieses der Datenbank nicht bekannt gemacht. Daher ist default mäßig für den Client die “server_encoding” vorgegeben. Und die ist bei Dir UTF-8, was eine bestimmte Darstellung des Uni-Codes ist. Solange Dein Text nur ASCII-Zeichen enthält funktioniert das auch alles einwandfrei, da die ersten 128 Zeichen im Uni-Code dem Code des ASCII-Zeichensatzes entsprechen und auch nur 1 Byte lang sind. Alle anderen Zeichen im Uni-Code bestehen aus mindestens 2 Bytes.
Die Lösung heißt also, herauszufinden, welchen Zeichensatz dein Betriebssytem verwendet, und dieses Deiner Datenbank mitzuteilen.
Für alle Datenbanken kann man das in der “postgresql.conf” oder für eine bestimmte Datenbank explizit mittels:
ALTER DATABASE "???___DATABASE___???" SET client_encoding=???___encoding___???]
Für den Rest des notwendigen Wissens ist das Lesen der Doku angesagt! :cry: :cry: :cry:
mfg
fristo