isprint() vs diakriticka znamenka
Cejka Rudolf
cejkar na dcse.fee.vutbr.cz
Pondělí Září 7 08:45:51 CEST 1998
Michal Hucik (chaky na goliash.inext.cz) wrote:
: Mozna oprava:
: ----------------
: if((unsigned char) *p >= ' ')
: /*char se nezmeni a zapise se do vystupu*/
: else
: sprintf (escape_buffer, "\\x%02x",(unsigned char) *p);
: /* do vystupu se zapise escape_buffer */
: }
: ----------------
: Tato oprava funguje spravne, ale nejsem si tak uplne jisty tim, ze bude
: chodit napr. v japonske lokalizaci, nebo na jinych OS ... Neda se nejak
: vycucnout z locales to, ktere znaky jsou printable?
Tohle je bohuzel velmi spatne reseni. Puvodni kod byl spravny.
Tj. funkce isprint() byla pouzita docela rozumne. Pouze se domnivam,
ze nekde pri inicializaci programu (ostatne stale jde o docela casty jev,
takze si z toho nic nedelejte) chybi radek:
setlocale(LC_CTYPE, "");
nebo
setlocale(LC_ALL, "");
A na Japonce muzete s klidem zapomenout. U tech neuspejete ani
s Unicode :-).
--------------------------------------------------------------------------
Rudolf Cejka (cejkar na dcse.fee.vutbr.cz; http://www.fee.vutbr.cz/~cejkar)
Technical University of Brno, Faculty of El. Engineering and Comp. Science
Bozetechova 2, 612 66 Brno, Czech Republic
Další informace o konferenci Linux