» »

c++ šumniki

c++ šumniki

alexxxx ::

Evo pojavil se mi je še zadnji problem shranjevanje šumnikov v datoteko. Torej šumniki se shranjujejo kot ANSI jas pa hočem da se shranijo kot UTF-8 saj drugače ne delajo. Lahko jih normalno vpisujem vendar morem nato datoteko odpreti dati kodiranje na UTF-8 rad bi da vse skupaj poteka avtomatsko. Če pa spremenim šumnike v samem programu (glej tukaj klik) pa mi v datoteko shrani take čačke ź ¬ ç ć § ¦ torej kako odpreti in shraniti datoteko v c++ tako da bo ta datoteka v UTF-8 formatu?

Ps google ni našel kaj pametnega
pps zelo fajn bi blo da se "deklarira" taka datoteka, drugače bom moral spreminjati cel program (cca 2000 vrstic kode :()

BlueRunner ::

C je nizkonivojski jezik. Kot takšen nima pojma o UTF-jih ali kakšnih kodnih tabelah.

Uporabiti boš moral katero izmed namenskih knjižnic za uporabo Unicode. Če si pametno uporabljal C++ abstrakcijo, sprememb ne bi smelo biti preveč. Če pa ne, potem pa pač ne.

Ena izmed knjižnic, ki jo morda lahko izkoristiš, je ICU.

alexxxx ::

Še kakšna druga možnost :O, kakršna koli?! Macro? Bat file? xyz?

BlueRunner ::

Hmm... ali sploh razumeš na katerem nivoju je gol C/C++ (zakaj se mu reče nizko nivojski) in kaj je Unicode (UTF)?



Oziroma, daj raje povej od kje dobiš te šumnike, ki jih želiš shraniti v datoteko. V kateri kodni tabeli jih imaš pa zapisane v pomnilniku?

Zgodovina sprememb…

Matako ::

Rabiš nekaj v stilu http://www.chilkatsoft.com/charset-libr..., delati to iz 0 je nehvaležno opravilo, ker je UTF8 UNICODE zapis in torej imaš potencialno tisoče kod in še druge fore (kombinacije).

Tudi ko boš enkrat uspel konvertirati nek določen s kodnimi tabelami razširjen ASCII niz ne pozabi dveh osnovnih lastnosti UTF-8

1. UTF8 Kode 0-127 so enake ASCII (7-bit) kodam. To je največji časr UTF8: kompatibilen je z ASCII.

2. Vsi ostali znaki so multi-byte! To zadnje ima za posledico, da ti bo strlen() ipd. funkcije v splošnem vrnil število _bajtov_ in _ne_ znakov. Se pravi še vedno boš pravilno alociral pomnilnik, ne boš pa na ta način dobil logične dolžine niza, za to uporabi utf8 funkcije (spet knjižnica). Je pa UTF8 dovolj zvito zamišljen, da je vedno za vsak byte v nizu jasno ali je nadaljevanje multi-byte sekvence ali je začetni/samostojni znak. To je recimo drugi čar UTF8 ;)
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Unicode decode

Oddelek: Programiranje
121960 (1418) Randomness
»

Unicode 8.0.0 prinaša več kot sedem tisoč novih znakov

Oddelek: Novice / Ostala programska oprema
3835451 (29930) johnnyyy
»

Nadgradnja softvera in zato problemi s šumniki

Oddelek: Operacijski sistemi
172850 (2542) zeutrino
»

[C++] Slovenski znaki v Command Promptu

Oddelek: Programiranje
133328 (3032) Makronaut
»

kodna tabela

Oddelek: Programiranje
84184 (3998) BlueRunner

Več podobnih tem