Avatar billede drakster Nybegynder
18. august 2005 - 13:11 Der er 10 kommentarer og
1 løsning

Danske bogstaver i Postgres

Hej eksperter.

Jeg får følgende fejl når jeg forsøger at indsætte en ny tubel, hvor en af kolonnerne indeholder enten æ,ø eller å i min postgres db:

Query failed: ERROR: invalid byte sequence for encoding "UNICODE": 0xe6 in C:\Program Files\Apache Group\Apache2\htdocs\ip\database.php on line 181

Insert statement ser således ud:

INSERT INTO customer (customer_id, name, adresse, start_date, comments, state, ip, ref_association) VALUES (234,'Martin','Bæk','12-11-2000','','active',-1071193854, 2)

Jeg overvejede at udskifte æ,ø,å med ae,oe,aa inden jeg gemmer, men da jeg gerne skulle kunne skelne mellem eks: "baek" og "bæk" holder det ikke.

Så spørgsmålet er naturlgivis hvordan jeg gemmer æøå i databasen.

Måske det er et PHP issue mere end det er postgres relateret?
Avatar billede bromer Nybegynder
18. august 2005 - 13:30 #1
Som jeg fik af vide af en anden så er det nok fordi du prøver at smide latin1 tegn mod basen som forventer unicode.
Avatar billede drakster Nybegynder
18. august 2005 - 13:32 #2
Det lyder rigtigt.

Det naturlige follow-up spørgsmål er så. Hvordan laver jeg Postgres om så den forventer latin1 sistedet?
Avatar billede bromer Nybegynder
18. august 2005 - 13:36 #3
Jeg ved faktisk ikke, hvordan du ændrer det når du allerede har data. Men du kan angive character set når du opretter databasen [1]

[1] http://k12linux.mesd.k12.or.us/docs/postgres/multibyte.html
Avatar billede dsj Nybegynder
18. august 2005 - 13:38 #4
Når du opretter din database skal du vælge tegnsættet 'LATIN1'. Når databasen først er oprettet kan dette ikke ændres.
Avatar billede bromer Nybegynder
18. august 2005 - 13:43 #5
drakster: det du kan gøre er at scripte dig ud af det, hvis det er data du ikke vil miste. Du kan oprette en database med den rette encoding og så flytte ting over hvor du laver convert til latin1 :)

En anden løsning er også at acceptere at din database nu kører i unicode. Du kan så smide noget uft8_encode rundt om data gør du smider det ind i databasen. Hvis du har en central database-dimmer kan du jo gøre det centralt og så burde det virke fint.
Avatar billede drakster Nybegynder
18. august 2005 - 13:50 #6
Fantastisk. Det var nøjagtig havd jeg havde brug for. Jeg siger mange tak
Avatar billede bromer Nybegynder
18. august 2005 - 13:56 #7
Daniel.. din point snyder... det havde jeg jo allerede sagt... :)
Avatar billede dsj Nybegynder
18. august 2005 - 14:00 #8
Ja du havde næsten sagt det, pånær "Jeg ved faktisk ikke, hvordan du ændrer det" :)

Du kan godt få halvdelen af pointene, hvis du vil?
Avatar billede bromer Nybegynder
18. august 2005 - 14:01 #9
Jeg vil ikke have point :) Men jeg har intet imod at pive offentligt...
Avatar billede drakster Nybegynder
18. august 2005 - 14:02 #10
haha. Jeg ville faktisk også have givet dig point bromer men du havde jo ikke kastet et svar. kun en kommentar. Men jeg skal gerne acceptere dit svar også hvis du kommer med et.
Avatar billede bromer Nybegynder
18. august 2005 - 14:03 #11
nejnej.. nu vil jeg bare være bitter :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester