Chyba v triedeni cs_CZ & sk_SK

Miloslav Trmac mitr na volny.cz
Čtvrtek Květen 29 15:37:54 CEST 2003


On Thu, May 29, 2003 at 03:25:00PM +0200, Michal Kubecek wrote:
> Kdyby se vždy argumentovalo tím, že něco je záležitost na léta, pak by
> s projekty jako Unicode nebo IPv6 nikdo ani nezačal. Pokud má být 'ch'
> skutečně chápáno jako jeden znak (a ono mimo počítače je - viz křížovky
> nebo formuláře), pak by mělo být jako jeden znak chápáno i v počítači.
> Mají-li příkaz sort a funkce strcmp() brát 'ch' jako jeden znak, proč
> by ho tak neměly brát i příkaz wc nebo funkce strlen().
Reality check:
* sort se chova podle LC_COLLATE, tedy ch = jeden znak
* wc umi (resp. podle POSIXu ma umet) pocitat jak bajty (-c), takk
  znaky (-m)
* strcmp () se VZDY chova podle jednotlivych bajtu, na porovavani
  podle LC_COLLATE se pouziva strcoll () n. wcscoll ()
* strlen () bude VZDY vracet pocet bajtu.

Nektere veci se daji vyresit "jednoduse" (LC_COLLATE), nektere jsou
natolik zazrane do existujicich aplikaci (strlen (), sizeof (char)
== sizeof (unsigned char), CHAR_BIT == 8), ze uz si je nikdo
nedovoli zmenit. Pro praci po znacich jsou definovana jina
(a dokonce fungujici) rozhrani. Ano, znamena to vice prace
a poruseni "standardnich postupu".
	Mirek


Další informace o konferenci Linux