FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Jag har problem att få UTF-8 att fungera på en sida jag har på en egen windows server.
Med filerna sparade i "standard ascii" och charset iso-8859-1 fungera allt för mig lokalt men vissa browsers får problem med svenska tecken. Med filerna sparade i "standard ascii" och charset utf-8 blir åäö fel Med filerna sparade i "utf-8" och charset utf-8 får jag följande felmeddelande Kod:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at F:\work\hemsidor\fractalposter3\httpdocs\index.php:1) in F:\work\hemsidor\fractalposter3\httpdocs\top_mall.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\work\hemsidor\fractalposter3\httpdocs\index.php:1) in F:\work\hemsidor\fractalposter3\httpdocs\top_mall.php on line 1 Apache har "AddCharset UTF-8 .utf8" med i httpd.conf Hur kan det här med teckenuppsättning påverka session_start() mm? Vad är det jag missat eller förstått fel? Finns det någon bra sida på nätet med information ang detta med teckenuppsättningar? |
|||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Citat:
När servern skickat iväg BOM-tecknet, tror den att den börjat servera innehållet av sidan. När du sen anropar header-funktionen, klagar den. Du kan inte använda ascii-kodningen på filen om du har svenska tecken i den. Om all innehåll kommer från databasen, då spelar det ingen roll vilken enkodning din fil har. Den ska bara ändå läsas av servern. Däremot är det viktigt, att om du hämtar utf-8 data från db, att du skickar utf-8 data till klienten (om du inte vill konvertera den först). För det använder du antigen header("Content-type: text/html; charset=utf-8"); och <meta> taggar, eller så konfigurerar du servern att alltid skicka charset utf-8. Så.. du kan även spara filer i utf-8 utan BOM. Kolla på din editor hur du gör det. |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
utf-8 utan BOM löste problemet med felmeddelandet men åäö blir nu alltid konstiga.
Själva "texten som blir fel ligger i ett fält i en tabell i databasen, fältet hade tidigare kollationering latin_1_swedish_ci nu bytte jag till utf8-swedish_ci, Mysql är inställt på teckenuppsättning "UTF-8 Unicode(utf8)" och Kollation "utf8_unicode_ci". Var kan felet ligga nu? |
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Kan hända att MySQL har och sparar i utf8 men konverterar fram och tillbaks mellan någon annan (typ iso) när det skickas/hämtas. Kommer tyvärr inte ihåg i detalj, men det finns något kommando för att ställa in vilken teckenuppsättning man använder när man skickar och tar emot (alltså inte sparas i databasen). (Eller kan det vara så att när du ställde om från latin-1 till utf8 så konverterades inte tecknen i tabellen utan blir kvar som latin-1 men betraktas som utf8?)
|
|||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Mycket flitig postare
|
Citat:
Jag vet inte riktigt vad "Mysql är inställt på teckenuppsättning UTF-8 Unicode(utf8)" ärligt talat. Enklaste är att köra igång mysql på kommandolinjen och köra: show variables like '%char%'; samt (_VIKTIGT_) show create table <min-tabell>. Även om du konverterar mysql-servern, och databasen och tabellen till utf-8, så kan ju de olika fälten fortfarande köra på latin1. Därför är det viktigt att alla de blir konverterade till rätt teckenuppsättning. |
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Medlem
|
Tack för tipsen.
show variables like '%char%'; visade att character_set_server stod på latin1. Då jag inte kunde hitta hur man ändrde på detta förutom att installera om så la jag till mysql_query("SET character_set_server='utf8'"); när man kopplar upp sig mot databasen. Nu verkar allt fungera. |
|||
![]() |
![]() |
Svara |
|
|