Servern bytte teckenkodning för ett bra tag sedan, och nu vill jag lösa de uppkomna problemen. När jag försöker validera min kod, säger validatorn att servern skickar utf-8. Så då ändrar jag
content="text/html; charset=ISO-8859-1"
till
content="text/html; charset=utf-8"
Borde inte det lösa problemet?
Jag har smileys som börjar med '§' (gissa varför ;)) och oavsett om charset är utf-8 eller ISO-8859-1 så får jag följande resultat på de sidor där smileysen står:
//Med både ISO och utf-8
Sorry, I am unable to validate this document because on line 50 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication.
The error was: utf8 "\xA7" does not map to Unicode
Va? Kan man inte skriva §, ´ (accent egy) och dylikt i utf-8? ?? Hur löser man det?
Hmm... Det löser problemet, men är det verkligen enda lösningen?
Och vad händer i nästa steg? Om någon klickar på §-evil smileyn, så visas §-evil i texarean (koden §-evil klistras in). I nästa steg (när formuläret postas) sparas det som § eller § då?
('-' med för att stoppa wF från att ersätta ovanstående text med smiley...)
§ räknas väl till reserverade tecken och ska förmodligen behandlas likadant som t.ex. &.
Förmodar att man använder någon regexp eller något i scriptet.
Men här cyklar jag :-)
Problemet du har kommer av att du skickar ut en latin1-§, vilket inte är ett giltigt tecken i UTF-8.
Vänta ett tag... Hur gör jag det? Sitter på en vanlig PC (Win XP) men laddar upp filen till en server som tydligen sparar i utf-8. Blir det inte UTF-8 på servern då??? Spelar stora/små bokstäver roll i 'UTF'?
tanten - Det låter underligt. På andra ställen i koden har jag motsvarande problem med é tex. é kan knappast vara ett reserverat tecken... Det verkar mer vara problem med de tecken som kräver mer än en bit för att lagras?
Det beror på vilken editor du har. I en riktig HTML-editor borde det inte behövas (den ska kolla vad du anger för kodning i meta-taggen), men i alla vettiga editorer kan man ange vilken kodning man vill använda.
aasah skrev:
laddar upp filen till en server som tydligen sparar i utf-8. Blir det inte UTF-8 på servern då???
Nej, det är inte den som "sparar" som UTF-8, det är bara att UTF-8 är dess defaultkodning. Således antar den att alla filer är UTF-8, den tar inget ansvar för att de faktiskt är det.
aasah skrev:
Spelar stora/små bokstäver roll i 'UTF'?
Error: Your query makes no sense ;) UTF-8 är bara ett sätt att koda Unicode på. Stora/små bokstäver spelar precis lika mycket/lite roll som i t.ex. ISO-8859-1, d.v.s. det beror helt och hållet på vad texten är för nåt.
aasah skrev:
tanten - Det låter underligt. På andra ställen i koden har jag motsvarande problem med é tex. é kan knappast vara ett reserverat tecken... Det verkar mer vara problem med de tecken som kräver mer än en bit för att lagras?
Ett typiskt tecken på att man sparat som Latin1 men skickar som UTF-8.
Nej, det är inte den som "sparar" som UTF-8, det är bara att UTF-8 är dess defaultkodning. Således antar den att alla filer är UTF-8, den tar inget ansvar för att de faktiskt är det.
Och det finns inget sätt att få servern att istället säga ISO när filen faktiskt ÄR ISO-kodad? :q Vore inte det enklare?
spango skrev:
aasah skrev:
Spelar stora/små bokstäver roll i 'UTF'?
Error: Your query makes no sense ;) UTF-8 är bara ett sätt att koda Unicode på. Stora/små bokstäver spelar precis lika mycket/lite roll som i t.ex. ISO-8859-1, d.v.s. det beror helt och hållet på vad texten är för nåt.
Missförstånd! Det där var inte bra uttryckt av mig... Jag menade spelar det någon roll om jag skriver:
content="text/html; charset=utf-8"
<!-- eller -->
content="text/html; charset=UTF-8"
Och det finns inget sätt att få servern att istället säga ISO när filen faktiskt ÄR ISO-kodad? :q Vore inte det enklare?
Man kan ju tycka det, men då måste webbservern inspektera varje fil innan den skickar iväg den, vilket ganska rejält skulle sänka prestandan rätt rejält. Dessutom finns det fler teckeuppsättningar än bara UTF-8 och ISO-8859-1, det kan vara ISO-8859-2, ISO-8859-3, ..., ISO-8859-14, US-ASCII, UTF-7, UTF-16, UTF-32... och så vidare. Vissa går inte att skilja på, åtminstone inte i det generella fallet.
Det beror på vilken editor du har. I en riktig HTML-editor borde det inte behövas (den ska kolla vad du anger för kodning i meta-taggen), men i alla vettiga editorer kan man ange vilken kodning man vill använda...
I min editor Crimson Editor finns två val:
Save as utf-8 with BOM
Save as utf-8 without BOM
BOM == Byte Order Mark, dvs ett par inledande bytekode som har speciell betydelse när de ligger i början av textfiler som lagras i vissa typer av Uniciodeformat ("UTF").
Mitt tips är att "köra utan" eftersom det är känt för att dels inte tillföra något i just UTF-8 (om jag inte missupfattar det när vi diskuterade runt ämnet i http://www.webforum.nu/showthread.php?t=150873 ) och dels är känt för att skapa fler problem än det löser om man skulle råka konfigurera någon Serverside-Script-sida lite "slarvfeligt".