Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: shadius 11 Listopadu 2010, 10:05:12

Název: ANSI C - UTF8
Přispěvatel: shadius 11 Listopadu 2010, 10:05:12
Dobrý den,
píšu v C v rámci semestrální práce jednoduchý validátor XML a řeším problém, jak detekovat výskyt znaku, který se neobjevuje v charsetu použitém v XML hlavičce - přičemž seznam možných charsetů omezme na cp1250 a utf-8. Principiálně mi přijde vhodné mít externí knihovnu - nechci si komplikovat život - a na každý zpracovaný znak se ptát jestli je v použitém charsetu. Bohužel, nejsem ani schopný např. akcentované znaky díky omezenosti ascii načíst a dělat to přes locate mi přijde jako blbost. Použití externí knihovny např. na zpracování znaku připadá v úvahu, pokud bude fungovat na linuxu i na windows. Zkoušel jsem knihovnu a tutorial z http://cprogramming.com/tutorial/unicode.html (uplne dole) bohužel nedaří se mi jí připlácnout k mému zdrojáku (dělám klasicky #include utf8.h) .  Hlásí chyby:

Kód: [Vybrat]
utf8.h:7: error: expected ‘)’ before ‘*’ token
utf8.h:10: error: expected declaration specifiers or ‘...’ before ‘u_int32_t’
utf8.h:13: error: expected declaration specifiers or ‘...’ before ‘u_int32_t’
utf8.h:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘u8_nextchar’
utf8.h:36: error: expected declaration specifiers or ‘...’ before ‘u_int32_t’
utf8.h:40: error: expected declaration specifiers or ‘...’ before ‘u_int32_t’
utf8.h:56: error: expected declaration specifiers or ‘...’ before ‘u_int32_t’
utf8.h:60: error: expected declaration specifiers or ‘...’ before ‘u_int32_t’

bohužel se svými chabými znalostmi C tohle nejsem schopen rozlousknout, poradíte?
Název: Re: ANSI C - UTF8
Přispěvatel: mk33 11 Listopadu 2010, 22:44:38
No pěkný zadání. Dej dyžtak vědět jak to vyřešíš docela by mě to zajímalo, dneska jsem zkoušel něco na tohle najít a nic. Co zkusit ve skupince zajít za učitelem jestli vám na to něco nedoporučí.

Ještě jsem koukal na zadání prací, co zkusit jedničku, když s tímhle nepohneš. Jde o jedno zadání semestrálky na FJP takže řešený to už několikrát bude a pěkně zdokumentovaný, jen pak udělat výstup do toho jazyka DOT.
Název: Re: ANSI C - UTF8
Přispěvatel: shadius 01 Prosince 2010, 16:42:03
tak jsem to nakonec vyresil tak ze jsem zacal delat neco jinyho a  tomuhle se vratim po case :) ale jinak ekstajn rikal ze nam to kodovani tam dal jenom aby videl co v nas je. Ozvu se urcite az to zase zacnu resit - coz bude za tyden :)
Název: Re:ANSI C - UTF8
Přispěvatel: acolade 01 Listopadu 2012, 08:06:17
Výborně!
Řeším podobnou úlohu také od Ekšteina(PC). Takže jak zpracovat textový soubor v cp1250 a zapsat také textový soubor v cp1250?
Název: Re:ANSI C - UTF8
Přispěvatel: acolade 01 Listopadu 2012, 10:11:14
Hm, tak jsem se rozhodl reprezentovat jednotlivá písmenka jako pole unsigned int a hotovo. Prostě ze souboru budu číst po dvou bytech. Mně je vlastně úplně jedno, co je to za písmenko. Vezmu jen taková, co jsou v abecedě viz. http://cs.wikipedia.org/wiki/Windows-1250. Převod na malé se provede jen odečtením. Jednotlivá slova jsou oddělena vším, co není v abecedě. Ve finále je to porovnání několika intervalů.

Jo a skombinovane s ctype.h http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.2.html