ungültige UTF-8-Sequenz

Hi,

schlage mich grade mit der Fehlermeldung:

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.

Gruß
Der Desian

hast du vielleicht ein zeichen verwendet das nicht zum codec deiner Datenbank passt?
Ist nur geraten.

guck mal hier:

http://p-nand-q.com/python/unicode_faq.html
und such mal nach deinem “0xfc”, keine ahnugn ob das was damit zu tun hat


Crypi

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?

so genau weiß ich das auch nicht, du kannst das Client und Server-Encoding verändern, ob ds dann was ändert weiß ich auch nicht.

Wenn ich das richtig verstanden hab kann ds vielleciht helfen die differenzen zu überwinden.



http://www.postgresql.org/files/documentation/books/pghandbuch/html/multibyte.html

Crypi

Wie kann ich die Clientcodieung in PHP ändern?

Hallo Desian,

diese Frage ist absolut unverständlich!

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

du kannst das encoding deines webservers ändern, von php direkt glaub ich nicht.

nutzt du den apache?

ich den httpd.conf das default charset ändern.

deine db musst du anpassen…client und server encoding.

Crypi