När jag kör vanliga utskrifter från databasen skrivs åäö ut som konstiga fyrkanter med "FFFD" i sig. Hela databasen är i utf8_swedish_ci, alla dokumenten är sparade i utf8 och jag kör med <meta http-equiv="content-type" content="text/html;charset=utf-8" /> längst upp (har testat i alla webbläsare, och det blir samma resultat i alla).
Detta gäller bara texten som skrivs ut från databasen, då texten som ligger i html-koden (den "hårdkodade") skrivs ut som den ska.
När jag kollar vad som sparats i databasen visas åäö korrekt, men låter jag en ajaxfunktion spara informationen blir åäö till åäö, men detta syns bara när jag är i phpMyAdmin, för när det väl skrivs ut på sidan blir det som det ska (missförstå inte nu, det är inte ajax jag har problem med, bara tog upp det eftersom jag tycker är konstigt att åäö blir läsligt när det skrivs ut från databasen medan det vanliga inte blir det).
Vad ska jag göra?
- Jag använder mig utav Wamp5 som server.
EDIT: Har bifogat en bild nedan som visar vad jag menar.
Specificerar du charset när du hämtar informationen med ajax också? Har du UTF-8 som kollation i databasen och tabellerna?
Använder inte ajax för att hämta, bara för att spara än så länge, vanlig php-kod som skriver ut från databasen. Hela databasen är i UTF-8, och alla tabeller är i UTF-8.
Verktyget phpMyAdmin använder i sig en charset, det är viktigt att komma ihåg.
Detta måste man ange manuellt när man loggar in, med alternativet "Språk - Language" (missvisande namn).
Meta-taggen i HTML-koden är egentligen en fullösning.
Det viktiga är att sätta en korrekt HTTP-header med Content-type och charset.
Verktyget phpMyAdmin använder i sig en charset, det är viktigt att komma ihåg.
Detta måste man ange manuellt när man loggar in, med alternativet "Språk - Language" (missvisande namn).
Meta-taggen i HTML-koden är egentligen en fullösning.
Det viktiga är att sätta en korrekt HTTP-header med Content-type och charset.
Länk till sidan? :)
Som jag skrev ovan, använder jag mig utav Wamp5, vilket då betyder att jag kör med en server på min egen dator, därför behöver jag inte logga in på phpMyAdmin samt att jag inte kan länka till sidan (har heller ingenstans att lägga upp sidan på). :p
En fullösning? Men samma problem uppstår på alla mina andra projekt där jag använder metatagen, alltså även där jag inte använder mig utav ajax. Tar jag bort metatagen blir all data från databasen normal, men helt plötsligt blir alla åäö som är "hårdkodade" oläsbara, dvs. tvärtom. Samma sak gäller om jag använder iso-8859-1 i metatagen, utdatan från databasen blir som den ska, medan de hårdkodade åäö blir oläsbara.
Edit: Ändrar jag dokumentkodningen i goLive till iso-8859-1 visas alla tecken som de ska (då ändras också metatagen till iso-8859-1. Fattar inget.
Hm, vad menar du? :l Du nämner ju phpMyAdmin i ditt första inlägg...
Frezze skrev:
En fullösning?
Ja precis. En <meta> är inte en riktig HTTP-header.
Om det visar sig att din PHP-sida skickar t.ex. Content-type: text/html; charset=iso-8859-1 så blir det knas.
Jag är inte säker, men jag tror att FFFD-tecknet är ett sk. "replacement" för ett felaktigt Unicode-tecken.
Detta tyder på att datat i själva verket inte är sparat som korrekt UTF-8.