Forum » Programiranje » utf8 vprašanje
utf8 vprašanje

zhigatsey ::
Živjo,
Malo študiram unicode in utf itd... pa sem prišel do tega...
Z utf8 lahko prikažeš katerikoli unicode znak... Velikost
se pa spreminja in sicer za latin 1 znake oz. latin 2 znake
je dovolj en byte, za npr. grščino ali pa cirilico pa sta potrebna 2 byte-a itd...
Na strani unicode standarda pa sem dobil en source za pretvarjanje
med utf zapisi in tam je tip utf8 predstavljen kot typedef unsigned char UTF8;
Torej je to en byte. Kako bi zapisal v ta en byte znak v cirilici ali grščini, če rabiš za to 2 byte-a..
To mi ni jasno..
HVala za odgovore
Malo študiram unicode in utf itd... pa sem prišel do tega...
Z utf8 lahko prikažeš katerikoli unicode znak... Velikost
se pa spreminja in sicer za latin 1 znake oz. latin 2 znake
je dovolj en byte, za npr. grščino ali pa cirilico pa sta potrebna 2 byte-a itd...
Na strani unicode standarda pa sem dobil en source za pretvarjanje
med utf zapisi in tam je tip utf8 predstavljen kot typedef unsigned char UTF8;
Torej je to en byte. Kako bi zapisal v ta en byte znak v cirilici ali grščini, če rabiš za to 2 byte-a..
To mi ni jasno..
HVala za odgovore

Gundolf ::
UTF8 string je zaporedje čisto običajnih 8bitnih bajtov. Pri tem pa je lahko en znak predstavljen z enim, dvema, ali večimi bajti.

zhigatsey ::
Če še malo naprej vprašam....
Recimo nekatere standardne funkcije kot sta remove ali pa rename iz cstdio...
Obedve vzameta za parametere const char*...
Kako bi recimo uporabil ti dve funkciji z wstringom v katerem imaš unicode, ali pa utf8, 16, 32 ime datoteke...
Bi moral najprej pretvoriti v navaden string? Kako pa bi pretvoril? Glede na locale sistema?
Verjetno moraš uporabiti wcstombs, ki je odvisen od naštimanega locale sistema, ali kaj podobnega?
Recimo nekatere standardne funkcije kot sta remove ali pa rename iz cstdio...
Obedve vzameta za parametere const char*...
Kako bi recimo uporabil ti dve funkciji z wstringom v katerem imaš unicode, ali pa utf8, 16, 32 ime datoteke...
Bi moral najprej pretvoriti v navaden string? Kako pa bi pretvoril? Glede na locale sistema?
Verjetno moraš uporabiti wcstombs, ki je odvisen od naštimanega locale sistema, ali kaj podobnega?

Gundolf ::
standardne c in c++ funkcije delajo nad znaki, ki imajo vsi enako dolgo predstavitev. Npr, v primeru stringa je to char, v primeru wstringa pa wchar_t (ki mislim da nima predpisane velikosti). S temi standardnimi funkcijami ne moreš delati s sistemi, ki predvidevajo variabilno dolžino znakov. Ampak, ti lahko vedno z neko svojo funkcijo prebereš UTF8 in ga shraniš v wstring. Še bolje, ziher se da najti na netu zastonjsko knjižnico, ki to naredi zate. Če ne drugje, mislim da v Boostu so neke funkcije za delo z unicodom.
Kolko ti pa zna c++ s svojimi locali pretvarjat med različnimi sistemi pa pojma nimam. Locali so v glavnem zaradi sortiranja pa predstavitve številk in podobnega.
Kolko ti pa zna c++ s svojimi locali pretvarjat med različnimi sistemi pa pojma nimam. Locali so v glavnem zaradi sortiranja pa predstavitve številk in podobnega.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] charset-aOddelek: Programiranje | 1000 (857) | SasoS |
» | aspx preberm HTML straniOddelek: Programiranje | 1510 (1374) | Senzacionale |
» | utf-8 in dolzina polja v mysqlOddelek: Izdelava spletišč | 3765 (3515) | tmz |
» | [C++] Slovenski znaki v Command PromptuOddelek: Programiranje | 3432 (3136) | Makronaut |
» | [C++] Unicode, Utf...Oddelek: Programiranje | 1592 (1475) | Matako |