Vita:Karakterek kódolása

A Programozás Wiki wikiből

Nem igazán értek egyet a cikk befejezésével:

S hiába látszott egy évtizeddel ezelőtt az Unicode kódrendszer mindent megoldó csodaszernek, a bájt alapú UTF-8 használata csak további problémákat szült a karakterlánc kezelés területén.

Csak a teljesen szószervezésű (16 vagy 32 bites) szöveges állományok, és az ilyet kezelni tudó alkalmazások tömegessé válása, továbbá az adatátvitelben a szószervezés térhódítása szüntetné meg a gondokat. Ez ugyan a tárhelyek méretét és a szöveginformációk átvitelének idejét megkétszerezné, vagy megnégyszerezné, ám ha belegondolunk, hogy a világon a multimédiás kép és hang anyagok mennyiségéhez képest a szöveges adatmennyiség csupán apró töredéket jelent, akkor ennek az álomnak lehet realitása.

Programozói tapasztalataim szerint az UTF-8 pont hogy egyszerűsíti az életet. Az újabb rendszerek minden szöveget eleve Unicode-ban tárolnak belül (vagy legalább is lehetőséget adnak rá), és innentől csak beolvasásnál és kiírásnál kell kódlapokkal törődni. Ehhez nem kell az, hogy minden szöveget átkódoljuk UTF-32-be, már ma is nagyon jól működik Javában, .NET-ben, Pythonban és egy rakás más nyelven.

Konkrétan mit oldana meg az, ha UTF-8 helyett mindenki UTF-32-be mentené a szöveges dokumentumait?Csaboka2 2010. szeptember 18., 13:18 (UTC)

Csaboka2: Köszi a linkeket, már terveztem én is, hogy beírok egy párat, de megkiméltél. A befejezésnél én csak arra utaltam, hogy még sok helyen él a 8 bites belső ábrázolás, és programozói szemponból az UTF-8 feldolgozása nehézkes (karakter indexelés). Örvendetes az egyre több fejlesztőrendszernél használható szavas karakterméret. Ebből azonban a 32 bites lenne az univerzális (pl. ha jól tudom a rovásírás karakterei a 16 bites ábrázoláson kívülre kerültek). És persze minden rendszernél, nem csak néhány kiragadott kedvencnél. A tárolás szempontjából az lenne a helyes, ha minden egyszerű szöveges dokumentum egységesen lenne mentve. Tehát tényleg nem az a fontos, hogy 32 bitesen, hanem ha UTF-8, akkor minden abban (a BOM miatt persze lehetőséget biztosíthatunk bármely Unicode-nak, mevel azáltal öndokumentálóvá válik). A sok kódlapnak az ideje szerintem lejárt, csupán az őrégi doksiknál kell bevitelkor a konverziót biztosítani. Egyébként az UTF-8-at a tömörség miatt találták ki és a bájtos adatátvitelek miatt. Persze az ember nehezen vált gondolkodási módot, és az átállások gazdasági oldala is sajnos komoly szempont, én azonban ezt a mindenhol-bájtszemléletet már elevultnak tartom. Kényszerpályának látom, ahogy a számítástechnika fejlődésének számos más vonalát is. Ha ez mások számára is személyes véleménynek minősül, akkor kihúzom a befejezésből.Tcs52 2010. szeptember 18., 18:51 (UTC)


Nekem most ilyen heppem van. Közös TXT fájlba akarom írni ezt is: Я хочу написать русский текст. (= orosz szöveget is szeretnék írni.) Csak Unicode alapon mehet, CP852, ISO8859-2 mind-mind kuka.

Azonban tárolni, továbbítani nem szeretnék 4-szeres adatmennyiséget. Így ... ASCII marad 7 bites, majd a kódlap és hasonló ákombákom helyett jönnek a további bitek újabb bájtokban.

Egy valami fontos: feldolgozónak wchar_t -s ábrázolás kell, nem az UTF8 interfészformátumban célszerű a sortörést és a többi hackot elvégezni. Az UTF-8 csak a unicode-nak a bájt takarékos I/O-ja. Bájt takarékos - főleg az angol 26 betű + 10 számra + ASCII írásjelekre, szeretjük.

Az egész világnak már rég át kellett volna rá állnia. Angolszász világot nem birizgálja, a többiek pedig örülnek. Oroszok, arabok, kóreaiak, kínaiak is!


Azonban tárolni, továbbítani nem szeretnék 4-szeres adatmennyiséget

Érdekesnek tartom ezt a "megrögzött" szemléletet annak a fényében, hogy már vagy 10 éve hajlandóak vagyunk egy Word-nek a hihetetlenül pazarló .doc tárolási formátumát lenyelni. Persze megértem, hogy aki napi nyolc órában másodpercenként 5 karakteres sebességgel 50 éven keresztül írja az életművét, az ezt a kb. 2.5GiB adatmennyiséget (sima bájtos szöveg) nem szeretné 10GiB-nyi helyen tárolni, hiszen az már a mai háttértáraknak legalább az 1 %-a. Én mindenesetre már felébredtem (vagy úgy látjátok, hogy éppen álmodom?).Tcs52 2010. szeptember 19., 15:29 (UTC)


... vagy csak kizárólag saját PC-dben gondolkozol. Itt tényleg nem probléma. :)

De ezen kívül is van élet. Láttál már olyan eszközt (2010-ben), ahol a RAM mértékegysége nem MB, GB, TB, hanem simán 1-2 kbyte? UTF8 oda is jó.


A másik, hogy nem csak Word doksi létezik a világon. Van egy rakás statikus HTML dokumentum például, amire nincs értelme négyszeres helyet pazarolni. Egy rakás helyen használnak XML-t adatátvitelre, konfiguráció tárolására meg egyebekre; ez magában is elég pazarló formátum, négyszeresére duzzasztani elég durva lenne. De tárolnak mindenféle szöveget adatbázisban is, ahol megint fontosabb a hatékony tárolás, mint a hatékony feldolgozás. Az UTF-8 kódolása és dekódolása elég egyszerű ahhoz, hogy ne okozzon problémát UTF-32-be konvertálni a belső feldologozáshoz, a lemezen és a hálózaton pedig minél kisebb, annál jobb.Csaboka2 2010. szeptember 19., 17:23 (UTC)


Mondjuk finoman úgy, hogy 'nem egészen tárgyilagos és kiegyensúlyozott'... különösen ami a jövőképet illeti; van bevált , univerzális, és meglehetősen kompatibilis tárolási módszer, az pedig az utf8. (PS: BOM nélkül!) (Amikor azt olvassuk, hogy '16 vagy 32' akkor biztosra vehetjük, hogy maga a szerző sem gondolta át precízen, amit írt: ma már tudjuk, hogy 16 bit túl kevés, és azt is, hogy a little és a big endian rút keze már ide is betette a lábát;)NevemTeve 2010. december 20., 11:37 (UTC)