webForumDet fria alternativet

Varför blir å, ä och ö fel med UTF-8?

Kontorsprogram

11 svar · 1 026 visningar · startad av Danne V

Medlem sedan aug. 20068 090 inlägg
Frågan#1

Tro denna fråga hör hemma i det här forumet och inte i Mac-forumet. Men om nån moderator anser annorlunda, så flytta tråden bara.

Jo, när jag kör Safari 2.0.4 på Mac (dvs den senaset versionen) och har webbläsaren default encoding på utf8 så blir det konstigt nog skit av å, ä och ö trots att dessa bokstäver är skrivna just så i källkoden, dvs INTE å osv.

Men om jag ställer in på Western Latin i webbläsaren, så blir det rätt.

(Nu när jag kollade så råkade det vara på tv.u som naturligtvis inte ens har ett charset definerat, men det ska väl egentligen inte spela nån roll).

Borde det inte bli rätt oavsett om jag kör med utf8 eller "western" i webbläsarens preferences?

Medlem sedan apr. 200312 679 inlägg
#2

Alla tecken är uppradade i en fet tabell. Och utf-8 och t.ex. Western Latins tabeller har inte tecknena på samma plats. A-z är samma, men sen kommer specialtecknena, och å, ä, ö har inte samma placering i de båda tabellerna.

Medlem sedan dec. 20042 245 inlägg
#3

Danne V skrev:

(Nu när jag kollade så råkade det vara på tv.u som naturligtvis inte ens har ett charset definerat, men det ska väl egentligen inte spela nån roll).

Det spelar all roll.

Danne V skrev:

Borde det inte bli rätt oavsett om jag kör med utf8 eller "western" i webbläsarens preferences?

Nej.

Självfallet så blir det "fel" om du ställer in webbläsaren att defaulta till utf-8 för sidor som inte är enkodade i utf-8 och inte anger någon enkodningsinformation. Och vice versa.

Medlem sedan aug. 20068 090 inlägg
#4

silfver skrev:

Alla tecken är uppradade i en fet tabell. Och utf-8 och t.ex. Western Latins tabeller har inte tecknena på samma plats. A-z är samma, men sen kommer specialtecknena, och å, ä, ö har inte samma placering i de båda tabellerna.

? :)

Medlem sedan aug. 20068 090 inlägg
#5

zcorpan skrev:

Det spelar all roll.

Nej.

Självfallet så blir det "fel" om du ställer in webbläsaren att defaulta till utf-8 för sidor som inte är enkodade i utf-8 och inte anger någon enkodningsinformation. Och vice versa.

Hmm... det är just det som jag tycker borde vara tvärtom med. Om man har charset som utf8 på sidan så visas ju tecknen rätt även om man skrivit "ä" och inte ä i koden.

Om INGEN charset finns definerad på sidan, och jag ställer in webbläsaren på utf8, så borde ju tecknet visas korrekt då också.

Och om jag inte minnns fel, så har "Western" (dvs ISO-8859-1) några å, ä eller ö alls, utan man måste ha ä osv. Hur kan då ett "ä" i källkoden bli rätt när jag väljer "Westren" i webbläsaren...?

(Fan, det här är väl en sån där idiotgrej som man bara inte fattar. Som en del som inte hajar det där med sommartid eller att man förlorar tid när man reser österut...)

Medlem sedan apr. 200312 679 inlägg
#6

Danne V skrev:

? :)

Tror jag misstolkade din fråga lite. :)

Medlem sedan dec. 20042 245 inlägg
#7

åäö finns med i iso-8859-1 och windows-1252.

Servern skickar en ström med bytes över linan. Hur denna ström av bytes ska konverteras till tecken beror på vilken teckenenkodning som har deklarerats. Om ingen teckenenkodning har deklarerats så används webbläsarens default.

Om strömmen av bytes konverteras till rätt tecken när de dekodas som windows-1252 så måste de bli fel när de dekodas som utf-8 för bytes som är över 0x7F, då windows-1252 och utf-8 bara är lika för bytes under 0x7F.

Tex: tecknet å representeras i windows-1252 som 0xE5, och i utf-8 som 0xC3 0xA5. Om du kodar tecknet å som windows-1252 och försöker dekoda 0xE5 som utf-8 kommer du inte tillbaka till tecknet "å", utan det tolkas som en ogiltig byte sekvens och du får �.

Väldigt förenklat. :)

Medlem sedan aug. 20068 090 inlägg
#8

zcorpan skrev:

åäö finns med i iso-8859-1 och windows-1252.

Servern skickar en ström med bytes över linan. Hur denna ström av bytes ska konverteras till tecken beror på vilken teckenenkodning som har deklarerats. Om ingen teckenenkodning har deklarerats så används webbläsarens default.

Om strömmen av bytes konverteras till rätt tecken när de dekodas som windows-1252 så måste de bli fel när de dekodas som utf-8 för bytes som är över 0x7F, då windows-1252 och utf-8 bara är lika för bytes under 0x7F.

Tex: tecknet å representeras i windows-1252 som 0xE5, och i utf-8 som 0xC3 0xA5. Om du kodar tecknet å som windows-1252 och försöker dekoda 0xE5 som utf-8 kommer du inte tillbaka till tecknet "å", utan det tolkas som en ogiltig byte sekvens och du får ?.

Väldigt förenklat. :)

Tro det eller inte, men jag fattade faktiskt det där.
Tack!

Medlem sedan aug. 20068 090 inlägg
#9

silfver skrev:

Tror jag misstolkade din fråga lite. :)

Kanske inte ändå. Du sa nog ungefär samma sak som zcorpan tror jag, men på ett annat sätt. Så nu ska du inte börja drömma konstigt bara för det......

Medlem sedan apr. 200312 679 inlägg
#10

Danne V skrev:

Kanske inte ändå. Du sa nog ungefär samma sak som zcorpan tror jag, men på ett annat sätt. Så nu ska du inte börja drömma konstigt bara för det......

Kan inte lova nåt. God natt. :e

Medlem sedan juni 20014 421 inlägg
#11

*acceptera som slutgiltigt*

Medlem sedan aug. 20068 090 inlägg
#12

colione skrev:

*acceptera som slutgiltigt*

Sorry...

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)