If-Koubou

Miksi englantilaiset hahmot tarvitsevat vähemmän tavua edustamaan niitä kuin muita aakkosia merkkejä?

Miksi englantilaiset hahmot tarvitsevat vähemmän tavua edustamaan niitä kuin muita aakkosia merkkejä? (Miten)

Vaikka useimmat meistä eivät ole luultavasti koskaan pysähtyneet ajattelemaan sitä, aakkosnumeeriset merkit eivät ole samankokoisia niiden tavujen lukumäärän mukaan, joita niiden edustaminen edellyttää. Mutta miksi se on? Tänään SuperUser Q & A -postilla on vastauksia utelias lukijan kysymykseen.

Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.

Osittainen ASCII-kuvakaavio Wikipediasta.

Kysymys

SuperUser-lukija khajvah haluaa tietää, miksi erilaiset aakkoset käyttävät erilaisia ​​tallennustiloja tallennettaessa:

Kun laitan 'a' tekstitiedostoon ja tallennan, se tekee siitä 2 tavua kooltaan. Mutta kun laitan merkin "ա" (armenialaista kirjainta), se tekee siitä 3 tavua kooltaan.

Mikä on ero tietokoneiden aakkosten välillä? Miksi Englanti vie vähemmän tilaa tallennettaessa?

Kirjeet ovat kirjaimia, eikö? Ehkä ei! Mikä on vastaus tähän aakkoselliseen mysteeriin?

Vastaus

SuperUser-avustajat Doktoro Reichard ja ernie ovat meille vastauksemme. Ensin, Doktoro Reichard:

Yksi ensimmäisistä koodaussuunnitelmista, joita kehitetään käytettäväksi mainstream-tietokoneissa, on ASCII (American Standard Code for Information Interchange) standardia. Se on kehitetty 1960-luvulla Yhdysvalloissa.

Englanninkielinen aakkosto käyttää osaa latinalaisesta aakkostosta (esimerkiksi englanninkielinen teksti on harvoin aksentoitu). Kyseisessä aakkosissa on 26 kirjainta, ei ottamatta huomioon tapausta. Ja siellä olisi oltava myös yksilölliset numerot ja välimerkit kaikissa järjestelmissä, jotka näyttelevät koodaavan englanninkielistä aakkostoa.

1960-luku oli myös aika, jolloin tietokoneilla ei ollut nykyistä muistia tai levytilaa. ASCII kehitettiin toimimaan standardin mukaiseksi funktionaaliseksi aakkostoksi kaikissa amerikkalaisissa tietokoneissa. Tuolloin päätökset tehdä jokainen ASCII-merkki 8 bittiä (1 tavua) olivat pitkät tekniset yksityiskohdat (Wikipedia-artikkelissa mainitaan, että rei'itetty nauha on 8 bittiä kerrallaan). Itse asiassa alkuperäinen ASCII-järjestelmä voidaan lähettää käyttäen 7 bittiä, ja kahdeksas voitaisiin käyttää pariteettitarkistuksiin. Myöhemmät tapahtumat laajensivat alkuperäistä ASCII-järjestelmää sisältäen useita aksentteja, matemaattisia ja terminaalisia merkkejä.

Äskettäin tietokoneiden käytön lisääntyminen kaikkialla maailmassa yhä useammalla eri kielellä olevilla ihmisillä oli pääsy tietokoneeseen. Tämä tarkoitti sitä, että jokaiselle kielelle on kehitettävä uusia koodausjärjestelmiä riippumatta muista järjestelmistä, mikä olisi ristiriidassa, jos niitä luetaan eri kielipalveluista.

Unicode syntyi ratkaisuna eri päätelaitteiden olemassaololle yhdistämällä kaikki mahdolliset merkitykselliset merkit yhdeksi abstraktiseksi merkistöksi.

UTF-8 on yksi tapa koodata Unicode-merkistöä. Se on muuttuva-leveä koodaus (ts. Eri merkkien koko voi olla erikokoisia) ja se on suunniteltu taaksepäin yhteensopivaksi entisen ASCII-järjestelmän kanssa. Sellaisena ASCII-merkkijono säilyy yhden tavun koossa, kun taas muut merkit ovat kooltaan kaksi tai useampia tavuja. UTF-16 on toinen tapa koodata Unicode-merkistöä. UTF-8: een verrattuna merkkejä koodataan joko yhden tai kahden 16-bittisen koodijoukon joukoksi.

Kuten muissakin kommenteissa todetaan, 'a' -merkki vie yhden tavun, kun taas '' 'vie kaksi tavua, joka merkitsee UTF-8-koodausta. Alkuperäisen kysymyksen ylimääräinen tavu johtui siitä, että lopussa on uusi rivin merkki.

Seuraa ernie vastausta:

1 tavu on 8 bittiä ja voi siten edustaa jopa 256 (2 ^ 8) eri arvoa.

Niille kielille, jotka tarvitsevat enemmän mahdollisuuksia kuin tätä, yksinkertaista 1 - 1-kartoitusta ei voida ylläpitää, joten merkin tallentamiseen tarvitaan enemmän tietoa.

Huomaa, että yleensä useimmat koodaukset käyttävät ensimmäisiä 7 bittiä (128 arvoa) ASCII-merkkeille. Tämä jättää 8. bittiä tai 128 enemmän arvoja lisää merkkejä. Lisää aksenttimerkkejä, aasialaisia ​​kieliä, kyrillisiä jne. Ja näet helposti, miksi 1 tavu ei riitä kaikkien merkkien pitämiseen.

Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.