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