Kom ihåg mig?
Home Menu

Menu


Teckensnittsproblem2

Ämnesverktyg Visningsalternativ
Oläst 2006-04-05, 11:52 #1
backens avatar
backen backen är inte uppkopplad
Medlem
 
Reg.datum: Jul 2003
Inlägg: 110
backen backen är inte uppkopplad
Medlem
backens avatar
 
Reg.datum: Jul 2003
Inlägg: 110
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
Mysql är inställt på teckenuppsättning "UTF-8 Unicode(utf8)" och Kollation "utf8_unicode_ci".
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?
backen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-04-05, 12:33 #2
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
Citat:
Originally posted by backen@Apr 5 2006, 11:52
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
Mysql är inställt på teckenuppsättning "UTF-8 Unicode(utf8)" och Kollation "utf8_unicode_ci".
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?
Det som jag kan tänka mig orsakar felmeddelandet är förmodligen BOM tecknet i PHP-filen som är utf-8 encodad.

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.
zoran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-04-05, 15:02 #3
backens avatar
backen backen är inte uppkopplad
Medlem
 
Reg.datum: Jul 2003
Inlägg: 110
backen backen är inte uppkopplad
Medlem
backens avatar
 
Reg.datum: Jul 2003
Inlägg: 110
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?
backen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-04-05, 15:55 #4
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
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?)
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-04-05, 15:59 #5
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
Citat:
Originally posted by backen@Apr 5 2006, 15:02
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?
Låt collation vara åt sidan just nu. Collation har endast med ordning att göra när du jämför eller sorterar, inte hur du lagrar tecknen.

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.
zoran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-04-05, 19:33 #6
backens avatar
backen backen är inte uppkopplad
Medlem
 
Reg.datum: Jul 2003
Inlägg: 110
backen backen är inte uppkopplad
Medlem
backens avatar
 
Reg.datum: Jul 2003
Inlägg: 110
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.
backen är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017