Avatar billede danm Nybegynder
07. april 2008 - 15:05 Der er 2 kommentarer og
1 løsning

Problem med tegnsæt og danske bogstaver med MyQL db

Ja, dette synes næsten altid at være et irreterende problem...

Jeg har en PHP5 side der læser noget data fra en MySQL 5 database. Og når teksten indeholder æ ø eller å, vises der bare en firkant istedet med bogstaverne ffdf (dette er vist en standard boks i firefox).
Databasen er oprettet i phpMyAdmin, og ALLE tegnsæt er sat til latin1_danish_ci i denne database. I databasen kan jeg se æøå ganske fint.
Jeg har i sidens <head> sat tegnsættet til iso-8859-1 med kommandoen:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Jeg har også prøvet at skrive latin1 og latin1_danish_ci, men det giver samme resultat...

Er der nogen der ved hvor det går galt??

Jeg har min egen dedikerede webserver, med Apache2 som webserver, har dette noget at sige? Jeg ved ganske simpelt ikke om der skal laves nogle indstillinger ved apache, eller ved hjemmesiden...
Avatar billede pidgeot Nybegynder
07. april 2008 - 15:17 #1
Det er vældig fint at du bruger <meta> til at angive tegnsættet - men hvad siger serveren i den HTTP header den sender tilbage (med andre ord: bruger din browser så også det tegnsæt)? Dette vil nemlig overstyre det der står i din <meta>.

Sandsynligvis er Apache sat op til at bruge UTF-8 som standardtegnsæt (kig efter AddDefaultCharset), hvilket er årsagen til dit problem - du kan fjerne linjen for at "tvinge" scriptet/HTML'en til at angive hvilket tegnsæt det er, eller du kan bruge header() i PHP for at sende en anden HTTP header til browseren (det er dog min personlige holdning at UTF-8 er at foretrække, så måske burde du i stedet overveje at skifte tegnsæt...)
Avatar billede danm Nybegynder
08. april 2008 - 16:23 #2
Ja, efter at kigge i oplysninger på den hentede side, kunne jeg se at der var to tegnsæt, både iso og utf8..

Det hjalp med at sætte tegsættet i headeren gennem PHP, men er det den eneste måde?

Jeg ville godt bruge UTF8, men det giver mig så problemer med et andet program jeg har lavet, som forbinder til databasen og indsætter noget data. Her duer UTF8 ikke af en eller anden grund..

Men smid endelig svar, og takker for hjælpen
Avatar billede pidgeot Nybegynder
08. april 2008 - 16:52 #3
Som nævnt skal du enten bruge header(), eller ændre AddDefaultCharset i din Apache's opsætning - måske er der noget i PHP's opsætning, men det mener jeg ikke.

Det smarteste ville nok være at bruge header, fordi du så får samme resultat hvis du engang skal over på en server hvor du ikke sådan lige har adgang til konfigurationen.

Grunden til at det andet program ikke kan finde ud af UTF-8, er sandsynligvis at du enten ikke fortæller serveren at forbindelsen skal køre med UTF-8 (check MySQL-manualen for det - har det ikke lige ved hånden), eller fordi du ikke sender data i det tegnsæt serveren skal bruge.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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