Meg tudná mondani néhány szóban, mi a különbség az Unicode és az UTF-8 között?


Legjobb válasz

A többi válasz nem egészen helyes.

Unicode igaz, szinte minden világszkript karaktereinek listáját tartalmazza. Ez azonban csak az Unicode Standard egyik része: a univerzális kódolt karakterkészlet . Az Unicode szabvány ezen Unicode karakterek renderelésére, rendezésére, normalizálására és igen kódolására is vonatkozik.

Az UTF-8 a három szabványos karakterkódolás, amelyet az Unicode számítógépes szövegként való ábrázolására használtak (a többi UTF-16 és UTF-32). Történelmileg a szöveges fájlokat általában bájtsorozatokként kódolták, ahol mindegyik bájt egy karaktert jelentett. Mivel azonban egy bájt csak a 256 érték egyikét veheti fel, az Unicode esetében ez nem lehetséges. A legegyszerűbb Unicode kódolás a UTF-32 , amely karakterenként 4 bájtot (vagy 32 bitet) használ. Ez azonban nem hatékony a tárolás, a memória és a feldolgozás terén. 1996-ig azt gondolták (vagy remélték), hogy 2 bájt elegendő minden Unicode karakter képviseletére, de aztán az emberek rájöttek, hogy mennyi kínai karakter van. Ennek eredményeként egyes nyelvek, például a JavaScript, továbbra is 2 bájtot ( UCS-2 ) használnak a karakterek ábrázolásához, ami problémákat okozhat olyan karakterek kezelésében, mint például a \ unicode {x1F60E }. Ennek kijavítására az UCS-2 helyébe UTF-16 lépett, ahol egyes karaktereket kettő kétbájtos kódegységek, nem pedig egy. Ez bonyolultabbá teszi a karakterlánc-manipulációt (például egy karakterlánc hosszának kiszámítását), de kevesebb helyet foglal el, mint az UTF-32.

UTF-8 hasonló az UTF-16-hoz, azzal a különbséggel, hogy a kódegységei mind egy bájt (8 bit) hosszúak, a karaktereket egy és négy kódegység képviseli. A sima szövegű (azaz ASCII) karaktereket egyetlen bájt képviseli, a normál, nem Unicode karakterláncokkal megegyező módon. Ennek nagy előnye, hogy a régi ASCII szöveg UTF-8-ra is érvényes. Ezen túlmenően az ASCII-t képviselő bájtokat nem használják más karakterek ábrázolásában, ezért a régebbi programokat, amelyek ezeket keresik, nem kell frissíteni. Ezeket az előnyöket kombinálva azzal a ténnyel, hogy az UTF-8 általában a leghatékonyabb mód a térben az Unicode szöveg tárolása (különösen a nyugati szövegeknél) azt jelenti, hogy manapság a weboldalak túlnyomó részét az UTF-8 kódolja.

Válasz

A szövegfeldolgozó programnak valamit ki kell küldenie (és menteni valamit egy fájlba). Ha azt szeretné, hogy a programok együttműködjenek, akkor a szövegfeldolgozó program beszéljen például a nyomtatójával és a szkenner-illesztőprogramokkal, le kell írnia, hogyan kommunikálnak. És ezt hatékonyan szeretné megtenni. egy szabvány lehetővé teszi ezt a kommunikációt. Ellenkező esetben a Microsoft Word intelligens árajánlatai nem működnek a Canon nyomtatóval és a HP szkennerrel. Nem az, amire vágyik …

Edit hozzáadva: Lásd a Comet válaszát arról, hogy az unicode hogyan kapcsolódik a szemantikához (nem a szintaxishoz /reprezentáció). Ez az interoperabilitással kapcsolatos álláspontomra vonatkozik. Azt szeretné, hogy a karaktere “értelmes” legyen. Éppen ezért egyes dolgok unicode-ban vannak ábrázolva, mások pedig nem. A latin ábécé, a cirill betű, a görög és a török ​​ábécé felhasználóinak mind a betűje „a” -nak tűnik (bár egyes betűtípusokban megkülönböztethetőek, másokban nem), de az említett nyelvű írók különböző karakterek (szemantikai különbségük van). Így az unicode különböző kódpontoknak tekinti őket. Különböző szemantikát képviselnek, másképp rendezik, stb. Ugyanez vonatkozik a bal és jobb idézőjelekre, valamint bizonyos ékezetes karakterekre. Egyes nyelvekben szemantikai különbséget jelentenek. Bizonyos típusú interoperabilitást kap, ha a szemantikát helyesen ábrázolja.

Másfajta képet kap, ha a képeket helyesen ábrázolja. Az unicode azonban az elsőre törekszik, nem a másodikra.

Ha az unicode a homoglifákat egyetlen karakterként ábrázolja, akkor az a probléma, hogy milyen betűtípust használnak, és ez tönkreteszi a szemantikai helyességet. A latin betű fekete betűvel nagyban különbözik a helvétától a római betűtől. És a ferde és dőlt betű nem mindig ugyanaz, de néha igen.

Amikor Bulgáriában olvastam jeleket, a legtöbb alkalommal a cirill betűknél egészen más betűtípust használnak, mint a latin átiratuk, így nyilvánvaló, hogy különböző karakterek, még az „a” betűnél is. De néha nem, és amikor a rendszámtáblán látom a Bm-t, meg kell különböztetnem, hogy angolul ír-e át Vt-re, vagy egyszerűen csak a latin Bm, és vannak egész szavak, amelyeket el kell olvasnom, hogy tudjam, melyik karakterkészletet tartalmazzák használják.

És még a szemantikai helyességet is nehéz megszerezni. A német éles karakterek csak kisbetűvel léteznek, és ha a szót nagybetűvel nyomtatja, akkor két S karaktert használ, de vannak olyan szavak kisbetűvel, amelyek két „kisbetűs” karaktert használnak, és olyanok, amelyek éles s.

Így az unicode, mint szinte minden szabvány, kompromisszum. Megpróbálja a megfelelő válaszokat megkapni, hogy a szavak helyesen legyenek ábrázolva, és azok segítségével továbbíthatók legyenek. Nem próbál „grafikusan” korrekt lenni, így az unicode-sorrend egyértelműen leírja a kinyomtatott ábrázolást az összes előírt részlet mellett. Ehhez több, mint unicode-ra van szükség.

És ha ezen az úton halad, akkor olyan eszközökkel van problémája, amelyek nem tudják kiadni (vagy bevinni) a megadott leírást. A 200 dpi-s nyomtató csak annyit képes megtenni, és vannak olyan finomságok, amelyeket egy 1200 dpi-s nyomtató képes kifejezni, és egyszerűen elvesznek 200 dpi-nél. A kérdés az, hogy érdekel-e? Néha igen, de máskor nem.

Az Unicode sok esetben jó, ha nem, és egyszerűen csak a megfelelő szemantikát akarja. Ha egyértelműen át akar adni egy szót, és ha ismeri, hogy melyik unicode kódpontokat használják, akkor tudja, hogy a szót hogyan írják természetes nyelven. A homoglifák megléte lehetővé teszi, hogy az ember kétértelmű legyen, de nem igényli. Az unicode-ban egyértelmű lehet. Csak azt nem tudja képviselni, hogy miként nyomtatható .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük