Homepage » hogyan kell » Miért van szükség az angol karakterek kevesebbre, hogy képviselje őket, mint a többi ábécé karaktereit?

    Miért van szükség az angol karakterek kevesebbre, hogy képviselje őket, mint a többi ábécé karaktereit?

    Bár a legtöbbünk valószínűleg soha nem hagyta abba a gondolkodást, alfabetikus karakterek nem egyforma méretűek az általuk képviselt bájtok számában. De miért? A mai SuperUser Q&A postai válaszok egy furcsa olvasó kérdésére vonatkoznak.

    A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..

    Részleges ASCII-diagramkép a Wikipédia jóvoltából.

    A kérdés

    A SuperUser olvasó khajvah tudni akarja, hogy a különböző ábécék miért vesznek el különböző mennyiségű lemezterületet a mentéskor:

    Amikor egy szövegfájlba helyezem az „a” -t, és elmentem, akkor ez 2 bájt méretű. De amikor egy karaktert, mint 'ա' (az örmény ábécé betűjét) beillesztem, akkor 3 bájt méretű lesz.

    Mi a különbség a számítógép ábécéi között? Miért veszi az angol kevesebb helyet a mentéskor?

    A betűk betűk, ugye? Talán nem! Mi a válasz erre az alfabetikus rejtélyre?

    A válasz

    A Doktoro Reichard és az Ernie SuperUser közreműködői válaszolnak nekünk. Először fel Doktoro Reichard:

    Az elsődleges kódolási sémák, amelyeket a mainstream számítógépekben használnak, az ASCII (Amerikai szabványos információcsere-kód) alapértelmezett. Az 1960-as években alakult ki az Egyesült Államokban.

    Az angol ábécé a latin ábécé egy részét használja (például néhány ékezetes szó angol nyelven). Ebben az ábécében 26 egyedi betű van, az esetet nem figyelembe véve. És minden olyan rendszerben is léteznie kell az egyedi számoknak és írásjeleknek, amelyek úgy tesznek, mintha az angol ábécét kódolnák.

    Az 1960-as évek is az volt az idő, amikor a számítógépek nem rendelkeztek a memóriával vagy a lemezterülettel. Az ASCII-t úgy alakították ki, hogy egy szabványos ábrázolása legyen az összes amerikai számítógépen. Abban az időben a 8 bites (1 bájtos) minden ASCII karakter hosszúságú döntése az idő technikai adatai miatt történt (a Wikipedia cikk azt a tényt említi, hogy a perforált szalag 8 bitet tartott egy időben). Valójában az eredeti ASCII sémát 7 bit segítségével lehet továbbítani, a nyolcadik pedig paritásellenőrzésre használható. A későbbi fejlesztések kiterjesztették az eredeti ASCII sémát, hogy több, ékezetes, matematikai és terminál karaktert is tartalmazzon.

    A számítógépek világszerte történő használatának közelmúltbeli növekedésével egyre több és különböző nyelvű ember férhet hozzá a számítógéphez. Ez azt jelentette, hogy minden nyelv esetében új kódolási sémákat kellett fejleszteni, függetlenül más rendszerektől, amelyek különböző nyelvű terminálokról olvasva ellentétesek lennének.

    Az Unicode a különböző terminálok létezésének megoldásaként jött létre, az összes lehetséges értelmes karaktert egyetlen absztrakt karakterkészletbe egyesítve.

    Az UTF-8 az Unicode karakterkészlet kódolásának egyik módja. Ez egy változó szélességű kódolás (azaz a különböző karakterek különböző méretűek lehetnek), és a korábbi ASCII rendszerrel való kompatibilitást tervezték. Mint ilyen, az ASCII karakterkészlet egy bájt méretű marad, míg bármely más karakter két vagy több bájt méretű. Az UTF-16 egy másik módja az Unicode karakterkészlet kódolásának. Az UTF-8-hoz képest a karakterek egy vagy két 16 bites kódegység készletként vannak kódolva.

    Amint más megjegyzésekben is szerepel, az „a” karakter egyetlen bájtot foglal el, míg az „ա” két bájtot foglal el, ami UTF-8 kódolást jelent. Az eredeti kérdésben az extra bájt az volt, hogy a végén egy új vonal létezett.

    Az Ernie válaszát követi:

    1 bájt 8 bit, és így akár 256 (2 ^ 8) különböző értéket is jelenthet.

    Azoknál a nyelveken, amelyeknél több lehetőség áll rendelkezésre, egy egyszerű 1–1 leképezés nem tartható fenn, így több adat szükséges a karakter tárolásához.

    Vegye figyelembe, hogy általában a legtöbb kódolás az ASCII karakterek első 7 bitjét (128 értékét) használja. Ez elhagyja a 8. bitet, vagy további 128 értéket több karakter számára. Adjon ékezetes karaktereket, ázsiai nyelveket, cirillot stb., És könnyen láthatja, hogy miért nem elegendő 1 bájt az összes karakter tárolásához.


    Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.