Var hittar man ex. iso-8859-1 och UTF-8 teckenkodtabeller?

Permalänk

Var hittar man ex. iso-8859-1 och UTF-8 teckenkodtabeller?

Hej

Skriver lite om teckenkoder och tabeller m.m. Visst är korrekt att en tabell hanterar massor av tecken där varje tecken versaler som gemener har ett id nr?

Menar utf-8 säg har ä på id 100 om. I webbutveckling väljer man ut-8 och allt är frid och fröjd men väljer man iso-8859-1 ersätts ä med just det tecknet som motsvaras av id 100?

Var hittar man sådana tabeller så man kan se själv?

Mvh Fredrik

Visa signatur

Computer: Windows 11, 64-bit, Intel 285k, MSI MEG Z890 Ace, 64GB RAM,
MSI GeForce RTX 5080 16GB Vanguard SOC Launch

Permalänk
Hedersmedlem

Ja, du har rätt idé om teckenkodningar. Vissa detaljer att tillägga är singel- vs multibytekodningar, och att alla "ID" som du säger inte ens måste vara giltiga tecken i vissa teckenkodningar.

I begynnelsen fanns ASCII (något förenklat ). Det definierar en översättning av talen 0–127 till tecken och kontrollsekvenser.

ASCII fick stort genomslag, och än idag hittar man implementationer som friskt antar att "äsch, allt är väl ändå typ ASCII här i världen". ASCII saknade dock representation av exempelvis å, ä och ö. Inom en byte kan man representera 256 element, så i praktiken fanns det 128 platser kvar "ovanför" ASCII. ISO-8859-1 är ett sätt att fylla på dessa platser med ytterligare tecken med fokus på västerländska behov, vilket gör att vi kunde använda å, ä och ö, samtidigt som man glatt kunde fortsätta läsa ASCII-dokument som en delmängd av ISO-8859-1 (men alltså inte nödvändigtvis vice versa).

256 tecken räcker dock inte långt. Olika kulturer skapade sina egna varianter av ASCII-utökningar för att få sina tecken tillgodosedda. För många andra räckte inte ens det (japanska, kinesiska, …) vilket gav "multibyte-kodningar", där multipla bytes krävdes för att representera ett tecken.

Till slut sade man kollektivt: "Nu räcker det! Vi definierar en teckenuppsättning en gång för alla: Unicode!". Varje tänkbart tecken, och mer därtill, får en unik plats (för närvarande 136 755 tecken definierade enligt Wikipedia), men av tekniska skäl är kampen inte riktigt över ändå: man måste kunna representera dessa teckenelement på något smidigt sätt i form av bitar och bytes, så att alla förstår att det faktiskt är tecknet för en snögubbe (U+2603) som ska stå på ett visst ställe när man läser sina "ettor och nollor".

UTF-8 är en sådan representation av Unicode. UTF-8 har egenskapen att den likt ISO-8859-1 mappar de första 128 elementen i en byte till samma tecken som ASCII. Dock håller den inte med om allt vad ISO-8859-1 säger om talen 128–255, och framför allt tillåter UTF-8 multibytetecken, dvs att man genom en speciell sekvens av bitar kan säga till den som tolkar att "håll i hatten, för att veta vilket tecken som kommer nu så kommer du behöva läsa flera bytes i rad".

UTF-8 är en praktisk kompromiss, som framför allt alltså behåller bakåtkompatibilitet med ASCII, är platseffektiv i vanligen förekommande (västerländsk) text och innehåller även viss resistens mot felöverföringar, på så sätt att man skulle kunna upptäcka om vissa bitar flippats eller tappats i en text. Det finns många andra Unicode-representationer som har andra egenskaper: exempelvis UTF-16, som är inkompatibel med ASCII men potentiellt effektivare platsmässigt för texter som består av många kodpunkter utanför de som vanligen används i västerländska språk. Väldigt värt att lära sig är förhållandet mellan exempelvis just begreppen Unicode, UTF-8 och UTF-16.

Sådana översättningstabeller du söker hittar du säkerligen på Wikipedia för respektive teckenkodning, exempelvis genom länkarna ovan, men var beredd på att det kan vara mer komplext än att alla teckenkodningar bara mappar samma heltal till olika tecken.

Ovan står i någon mån egentligen en bitsekvens likt "111000101001100010000011", men din webbläsare tolkar detta enligt UTF-8:s regler, vilket ger kodelement 9731 i Unicode (0x2603 hexadecimalt), vilket är vad Unicode-konsortiet har bestämt ska betyda "snögubbe". De som gjort ditt teckensnitt har sedan tagit sig mödan att rita en snögubbe som matchar mot detta kodelement, vilket är vad du bör ha sett på din skärm.

"Snow man" är snarare "snögubbe" än "snöman" :-)
Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk

Tack för lektioner

Japp det dök upp en snögubbe här

Visa signatur

Computer: Windows 11, 64-bit, Intel 285k, MSI MEG Z890 Ace, 64GB RAM,
MSI GeForce RTX 5080 16GB Vanguard SOC Launch

Permalänk
Hedersmedlem

@freddehboy *Rubrik förtydligad (§3.1)*

Tänk på att en beskrivande rubrik ger bättre svar och ett mer lättnavigerat forum

Visa signatur

Danskjävel så krattar som en skrivare...