ANSI eller UTF8?

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
morre_



Medlem i: 2643 dagar

Status: Offline



#689844
Inlägg Skrivet: 2010-09-29 22:30      Ämne: ANSI eller UTF8? Citera

Jag undrar vilket filformat man skall spara sina .php filer i egentligen?
När jag kör med UTF8 så blir tex åäö konstiga tecken när jag sätter in dem i en databas, medan det blir korrekt med ANSI. Så ANSI känns ju självklart

Något säger mig ändå att jag skall använda UTF8.. Vad är skillnaden och vilket bör jag använda, snälla hjälp!

Kan tillägga att fältet har koallotering "utf8_swedish_ci" i databasen.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 4818 dagar
Från: Sveriges framsida
Status: Offline



#689860
Inlägg Skrivet: 2010-09-30 09:22      Ämne: Citera

Teckentabellen ANSI är den ursprungliga teckentabellen och har stöd för 128 tecken. Det innebär A-Z, 0-9 osv. och normalt inget stöd för t.ex. åäö.
Förmodligen tolkas din kod som ISO-8859-1 (Latin1) istället för ANSI.

ISO-8859-1 är en teckentabell för "West European"-språk. Den har alltså åäö, ü, ï, ñ osv.

UTF-8 är en global teckentabell. Den skall innehålla tecken för nästan alla språk (med undantag för vissa kinesiska dialekter tror jag).

Använder du UTF-8 kan tecknen visas på vilken dator som helst. Använder du ISO-8859-1 eller ANSI kommer kanske internationella tecken (åäö osv.) visas konstigt (med en annan teckentabell om inte ISO-8859-1 finns installerad på datorn).

Det viktiga att tänka på vad gäller teckentabeller är att använda samma teckentabell överallt.
Dvs: Du skall ha samma teckentabell i
* Ditt PHP-skript
* Databasen
* Databastabeller och fält
* Databasuppkopplingen
* Header som skickas till webbläsaren (Content-type: text/html; charset=utf-8 eller iso-8859-1)
* Eventuellt meta-tagg med ovanstående content-type
* Input som kommer utifrån (t.ex. externa xml-filer) (kan också konverteras till rätt i ditt skript)
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
morre_



Medlem i: 2643 dagar

Status: Offline



#689865
Inlägg Skrivet: 2010-09-30 11:12      Ämne: Citera

marabou skrev:
Teckentabellen ANSI är den ursprungliga teckentabellen och har stöd för 128 tecken. Det innebär A-Z, 0-9 osv. och normalt inget stöd för t.ex. åäö.
Förmodligen tolkas din kod som ISO-8859-1 (Latin1) istället för ANSI.

ISO-8859-1 är en teckentabell för "West European"-språk. Den har alltså åäö, ü, ï, ñ osv.

UTF-8 är en global teckentabell. Den skall innehålla tecken för nästan alla språk (med undantag för vissa kinesiska dialekter tror jag).

Använder du UTF-8 kan tecknen visas på vilken dator som helst. Använder du ISO-8859-1 eller ANSI kommer kanske internationella tecken (åäö osv.) visas konstigt (med en annan teckentabell om inte ISO-8859-1 finns installerad på datorn).

Det viktiga att tänka på vad gäller teckentabeller är att använda samma teckentabell överallt.
Dvs: Du skall ha samma teckentabell i
* Ditt PHP-skript
* Databasen
* Databastabeller och fält
* Databasuppkopplingen
* Header som skickas till webbläsaren (Content-type: text/html; charset=utf-8 eller iso-8859-1)
* Eventuellt meta-tagg med ovanstående content-type
* Input som kommer utifrån (t.ex. externa xml-filer) (kan också konverteras till rätt i ditt skript)


Okej jag förstår.. Är det därför jag får konstiga åäö i min databas med UTF8 i dokumentet samt i fältet i databasen?
Kan även tillägga att hos one.com får jag inte header('location') att fungera med UTF8 Sad
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 4818 dagar
Från: Sveriges framsida
Status: Offline



#689870
Inlägget är accepterad som det rätta svaret Skrivet: 2010-09-30 11:42      Ämne: Citera

Tänk på att när du använder UTF-8 måste dina filer sparas som "UTF-8 utan BOM"

Citat:
Okej jag förstår.. Är det därför jag får konstiga åäö i min databas med UTF8 i dokumentet samt i fältet i databasen?

Konstiga tecken får du om du inte använder samma teckentabell överallt.
Om du har UTF-8 i dokumenten/filerna och ANSI/ISO-8859-1 i databasen så blir det konstiga tecken i databasen. Är det UTF-8 i databasen och ANSI/ISO i dokumenten blir det konstiga tecken på sidorna. Använd ALDRIG olika teckentabeller på olika delar av din sajt. Använd ALLTID samma överallt.

Location skall fungera även med UTF-8 så länge du inte använder åäö i urlen!
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
morre_



Medlem i: 2643 dagar

Status: Offline



#689874
Inlägg Skrivet: 2010-09-30 12:27      Ämne: Citera

marabou skrev:
Tänk på att när du använder UTF-8 måste dina filer sparas som "UTF-8 utan BOM"

Citat:
Okej jag förstår.. Är det därför jag får konstiga åäö i min databas med UTF8 i dokumentet samt i fältet i databasen?

Konstiga tecken får du om du inte använder samma teckentabell överallt.
Om du har UTF-8 i dokumenten/filerna och ANSI/ISO-8859-1 i databasen så blir det konstiga tecken i databasen. Är det UTF-8 i databasen och ANSI/ISO i dokumenten blir det konstiga tecken på sidorna. Använd ALDRIG olika teckentabeller på olika delar av din sajt. Använd ALLTID samma överallt.

Location skall fungera även med UTF-8 så länge du inte använder åäö i urlen!


Nu har jag ändrat alla dokumenten till UTF8 without BOM. Dock får jag ÅÄÖ konstigt i webbläsaren när jag kör
KOD:
1:
<?php echo "åäö"; ?>
Måste jag ändra alla åäö till &aring; o.s.v.?

EDIT: Länk:
http://data.fuskbugg.se/skogsturken/------dump.jpg
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 4818 dagar
Från: Sveriges framsida
Status: Offline



#689880
Inlägg Skrivet: 2010-09-30 12:54      Ämne: Citera

De tecken du ser är "UTF-8" visat som Iso-8859-1.
Kolla igenom din kod och kolla så det står rätt bokstäver där.

Gå igenom min checklista ovan och kolla så alla filer är utf-8 (även includes), att du har utf8 som header och meta-tagg.

Så länge du ser de konstiga tecknen är det någonting som inte är utf-8, eller något som är "dubbelkodat" (sparat som utf-8 en gång, konverterat till iso och sedan kodat till utf-8 igen, då skall du se det även i källkoden).

&aring; är till för att fungera utan en specifik teckentabell. Om du har t.ex. UTF-8 eller ISO-8859-1 behövs inte &aring; utan det räcker att skriva i klartext.
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic