abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 15:00 | Zajímavý článek

    Minulý týden proběhla hackerská soutěž Pwn2Own Vancouver 2023. Adobe Reader, Microsoft SharePoint, Oracle VirtualBox, Tesla, Ubuntu Desktop, Windows 11, macOS, Microsoft Teams, VMWare Workstation. Vše hacknuto. Synacktiv získal 530 000 dolarů a Teslu Model 3.

    Ladislav Hagara | Komentářů: 0
    dnes 07:00 | Nová verze

    Byla vydána nová stabilní verze 3.5 svobodného 3D softwaru Blender. Přehled novinek i s náhledy v oznámení o vydání a na YouTube.

    Ladislav Hagara | Komentářů: 0
    dnes 06:00 | Nová verze

    Po 5 měsících vývoje od vydání verze 6.1 byla vydána nová verze 6.2 svobodného open source redakčního systému WordPress. Kódové jméno Dolphy bylo vybráno na počest amerického jazzového altsaxofonisty, flétnisty a basklarinetisty Erica Dolphyho.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | IT novinky

    Josef Průša představil (YouTube) novou 3D tiskárnu Original Prusa MK4. Cena sestavené tiskárny je 27990 Kč. Cena stavebnice je 20990 Kč.

    Ladislav Hagara | Komentářů: 4
    včera 19:00 | Nová verze

    Turris OS, operační systém pro síťová zařízení Turris postavený na OpenWrt, byl vydán v nové verzi 6.3.0. Vývojáři upozorňují, že Netmetr byl nahrazen LibreSpeedem, viz příspěvek na blogu CZ.NIC.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | Bezpečnostní upozornění

    Byl vydán xorg-server 21.1.8 a xwayland 22.1.9 a 23.1.1. Řešena je zranitelnost CVE-2023-1393 využitelná k lokální eskalaci práv.

    Ladislav Hagara | Komentářů: 4
    včera 15:00 | Nová verze

    Byla vydána nová verze 10 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu.

    Ladislav Hagara | Komentářů: 0
    28.3. 22:33 | Komunita

    Ubuntu Cinnamon bude od Ubuntu 23.04 oficiální odnoží Ubuntu (návrh, schválení).

    Ladislav Hagara | Komentářů: 4
    28.3. 19:22 | Nová verze

    Byla vydána nová major verze 5.0 účetního softwaru GnuCash (Wikipedie). Ve formátu Flatpak je již k dispozici na Flathubu.

    Ladislav Hagara | Komentářů: 0
    28.3. 18:33 | Nová verze

    Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Alwa's Awakening (ProtonDB).

    Ladislav Hagara | Komentářů: 1
    Používáte WSL (Windows Subsystem for Linux)?
     (73%)
     (12%)
     (3%)
     (11%)
    Celkem 372 hlasů
     Komentářů: 7, poslední 28.3. 17:34
    Rozcestník


    Dotaz: Konverzia unicode znaku na dva chary (utf-8)

    18.6.2008 00:52 ...............23 | skóre: 15 | blog: Various Stuff blog
    Konverzia unicode znaku na dva chary (utf-8)
    Přečteno: 532×
    V týchto veciach sa moc nevyznám ale snáď sa vyjadrím správne:
    Potrebujem nejakú funkciu (ideálne by bolo C makro) na konverziu jedného 16-bitového unicode znaku, napr. 0x00fd na dva 8-bitové znaky podľa UTF-8, v tomto prípade by to napríklad boli 0xc3 a 0xbd. Opačnú konverziu (dva chary na unicode znak) som vyhrabal v kóde SDL_ttf, ale toto som nikde nenašiel. Vďaka za každú odpoveď.

    Odpovědi

    18.6.2008 05:10 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    neslo by na to nasroubovat knihovnu iconv?
    In Ada the typical infinite loop would normally be terminated by detonation.
    18.6.2008 11:17 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    hm, no funkcia iconv chce na vstupe pointer na pole charov, takže už to chce asi v tvare po dvojiciach bajtov...
    18.6.2008 08:27 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    wctomb(). Pozor, vplyv má nastavenie locale (buď premenné prostredia LC_* a LANG, prípadne volanie funkcie setlocale() )
    18.6.2008 11:26 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    wctomb vyzerá že by to mohlo byť ono, ale stále mi to vracia -1 :-)

    proste ja by som potreboval opačnú operáciu k tomuto
    #define TO_UNICODE(c1, c2) ((Uint16)(((unsigned char)c1)&0x1F) << 6 | (Uint16)(((unsigned char)c2)&0x3F))
    ale asi nakoniec tie znaky nechám v unicode a upravím pár funkcií na prácu s nimi, bude to rýchlejšie...
    18.6.2008 12:13 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    Jste si jistý, že všechny UCS-2 znaky je možné zakódovat do 2 B UTF-8?
    18.6.2008 12:21 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    Do 2 bajtov samozrejme nie, ale viacbajtové znaky (japonské a podobné hovadiny) zatiaľ nepotrebujem :-)
    18.6.2008 16:52 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    I české texty ale nebudou mít v UTF-8 všechny znaky dvoubajtové – spodní polovina ASCII tabulky se kóduje v UTF-8 do jednobajtových znaků.
    18.6.2008 18:27 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    Konvertujem len znaky ktoré nie sú v ASCII... Proste pri stlačení klávesu dostanem unicode číslo toho znaku a potrebujem ho skonvertovať na UTF-8, viď tu http://www.libsdl.org/cgi/docwiki.cgi/SDL_keysym

    Druhá možnosť by bola nechať tie data v unicode, ale to by som musel upraviť istú časť kódu ktorý už mám...
    18.6.2008 19:13 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    Možno by sa dalo použiť niečo takéto (nerieši sa tam endianness):
    #include <stdio.h>
    
    #define FROM_UNICODE(c, c1, c2, c3) \
    if ((Uint16)(c) <= 0x7f) { \
    	c1 = (unsigned char)(c); \
    	c2 = c3 = 0; \
    } else if ((Uint16)(c) <= 0x7ff) { \
            c1=(unsigned char)(((c) >> 6) | 0xc0); \
            c2=(unsigned char)(((c) & 0x3f) | 0x80); \
            c3 = 0; \
    } else if ((Uint16)(c) <= 0xd7ff) { \
            c1=(unsigned char)(((c) >> 12) | 0xe0); \
            c1=(unsigned char)((((c) >> 6) & 0x3f) | 0x80); \
            c3=(unsigned char)(((c) & 0x3f) | 0x80); \
    } else { \
    	c1 = c2 = c3 = 0; \
    }
    
    typedef unsigned short int Uint16;
    
    int main(void)
    {
    	Uint16 z = 0xfd;
    	unsigned char c1, c2, c3;
    
    	FROM_UNICODE(z, c1, c2, c3);
    
    	printf("%x, %x %x %x\n", z, c1, c2, c3);
    	return 0;
    }
    
    Ja by som tam pravdepodobne používal originálne dáta v UCS-2 alebo v UTF-16 (alebo čo sa to tam vlastne používa).
    18.6.2008 19:47 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Konverzia unicode znaku na dva chary (utf-8)
    Super, díky moc! To je presne čo som potreboval.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.