dudeMedlem sedan aug. 2002386 inlägg Har en databas och använder följande för att hämta ut datum:
setlocale(LC_ALL, "sv_SE", "sv_SE.utf-8", "sv", "swedish");
$startdatum = ucfirst(strftime("%A, %e %B, %Y", strtotime($row['startdatum'])));
Vilket ger resultatet:
S�ndag, 12 december, 2010
I headern har jag följande:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Om jag ändrar headern till:
<meta http-equiv="Content-Style-Type" content="text/css">
Så skrivs datumen korrekt ut, men då blir det istället konstiga tecken på å ä ö i data som plockas ut från databasen.
Skulle bli oerhört glad om någon har en bra lösning på detta, har sökt efter svar i timmar utan att få koll på det...
Nate.AMedlem sedan mars 2006296 inlägg Har du kontrollerat att php-filen också har utf-8 encoding?
dudeMedlem sedan aug. 2002386 inlägg Hur kontrollerar men det?
Nate.AMedlem sedan mars 2006296 inlägg Det beror på vad du kodar i för program. I ex. Dreamweaver så hittar du den inställningen under Ändra->Sidegenskaper...->Titel/Kodning > Kodning
Danne VMedlem sedan aug. 20068 090 inlägg Databasen ska ha "collation utf-8 general (eller swedish)"
php-sidorna ska vara sparade som utf-8 (som Nate föreslår).
dudeMedlem sedan aug. 2002386 inlägg Hmm... får det inte att fungera, har följande inställningar på databasen:
--Kopierat från phpmyadmin--
MySQL teckenuppsättning: UTF-8 Unicode (utf8)
Kollation för MySQL-uppkoppling: utf8_swedish_ci
I Dreamweaver har jag följande inställningar på mina php-sidor:
Document type (DTD): XHTML 1.0 Transitional
Encoding: Unicode (UTF-8)
Unicode Normalization Form: c (Canonical Decomposition followed by Canonical Composition)
Ändå så blir det fel tecken när å, ä och ö ska skrivas ut. Finns inget sätt att ändra i phpmyadmin på teckenuppsättningen heller. Någon som vet vad det är som spökar?
dudeMedlem sedan aug. 2002386 inlägg Någon som har en aning om vad som kan vara fel?
Eller kanske vet någon bra länk där man kan läsa mer om å ä ö och olika åtgärder för att lösa problemet?
dudeMedlem sedan aug. 2002386 inlägg När jag plockar bort htmlentities så blir det rätt. Men det känns ju inte som en jättebra lösning heller, vill ju inte skriva ut någon på webbsidan utan att först kört htmlentities...
Om jag skriver ut tex.
row['namn']
så blir det rätt: Åsa
Om jag skriver ut
htmlentities(row['namn'])
så blir det fel: Ã�sa
Vad skulle hända om du bara smackade på utf8_encode() runt din uträkning av startdatum?
dudeMedlem sedan aug. 2002386 inlägg
Oldtimer skrev:
Vad skulle hända om du bara smackade på utf8_encode() runt din uträkning av startdatum?
Det funkar ju helt perfekt! Tack för den!!
Får fortfarande inte rätt på det när jag plockar ut text från databasen och kör htmlentities på den uthämtade datan. Men allt annat funkar ju faktiskt nu, kanske man kan göra någon egen funktion istället för htmlentities som bara förhindrar html-taggar!?
htmlentities förutsätter väl att strängen är i ISO-8859-1 om inget annat anges. Och dina strängar från databasen är väl UTF-8? Så du borde väl behöva ange det?
Typ:
htmlentities(row['namn'], ENT_COMPAT, "UTF-8")
eller något sådant.
dudeMedlem sedan aug. 2002386 inlägg
Oldtimer skrev:
htmlentities förutsätter väl att strängen är i ISO-8859-1 om inget annat anges. Och dina strängar från databasen är väl UTF-8? Så du borde väl behöva ange det?
Typ:
htmlentities(row['namn'], ENT_COMPAT, "UTF-8")
eller något sådant.
Än en gång tack så mycket! Funkar strålande nu!
Det enda som fortfarande spökar är när jag skriver: '
Till exempel: O'Brian
Jag skickar det via ett formulär och utan att köra någon som helst funktion på fältet (endast hämta med $_POST) så skrivs det ut: O\'Brian
Det verkar precis som att det är någon inställning på webbhotellet, kan det vara så? På skärmen vill jag ju att det ska stå O'Brian såklart...
Danne VMedlem sedan aug. 20068 090 inlägg
dude skrev:
Än en gång tack så mycket! Funkar strålande nu!
Det enda som fortfarande spökar är när jag skriver: '
Till exempel: O'Brian
Jag skickar det via ett formulär och utan att köra någon som helst funktion på fältet (endast hämta med $_POST) så skrivs det ut: O\'Brian
Det verkar precis som att det är någon inställning på webbhotellet, kan det vara så? På skärmen vill jag ju att det ska stå O'Brian såklart...
Strip slashes:
http://www.google.com/search?client=safari&rls=en&q=php+strip+slashes&ie=UTF-8&oe=UTF-8