(fwd) toupper() & koi8-r

Andrey Gerzhov (kittle@freeland.kiev.ua)
Thu, 23 Sep 1999 11:22:46 +0300 (EEST)

-- forwarded message --
Path: freeland.kiev.ua!routki.ki.yurteh.net!carrier.kiev.ua!srcc!Gamma.RU!ddt.demos.su!f400.n5020!f238.n5020!f204.n5020!f44.n5000!f79.n5000!not-for-mail
Newsgroups: fido7.ru.unix.bsd
Distribution: fido7
X-Comment-To: Alexander Shursha
Approved: gateway@fido7.ru
From: Max Khon <Max.Khon@f79.n5000.z2.fidonet.org>
Date: Fri, 17 Sep 99 18:32:00 +0400
Subject: toupper() & koi8-r
Message-ID: <937596531@f79.n5000.z2.ftn>
References: <882022995@f88.n4616.z2.fidonet.ftn>
Organization: UTSL
X-FTN-AREA: RU.UNIX.BSD
X-FTN-MSGID: 2:5000/79 37e29673
X-FTN-REPLY: 2:4616/88@fidonet 34929a53
X-FTN-CHRS: CP866 2
X-FTN-TID: hpt v0.29
X-FTN-Tearline: Msged/BSD TE 06 (pre)
X-FTN-Origin: UTSL (2:5000/79)
X-FTN-SEEN-BY: 50/210 993 450/102 461/640 462/30 463/68 159 207 464/34 465/110
X-FTN-SEEN-BY: 469/38 478/25 2810/13 4614/1 4615/21 4635/4 5000/13 26 27 44 46 47
X-FTN-SEEN-BY: 5000/51 61 63 68 71 72 73 75 76 79 83 104 111 120 5001/15 16 17 50
X-FTN-SEEN-BY: 5002/16 5002 5003/15 5004/16 5005/55 5005 5006/15 5010/77 5011/13
X-FTN-SEEN-BY: 5011/201 5013/8 5014/4 5015/4 5018/1 5020/10 20 37 52 69 104 115
X-FTN-SEEN-BY: 5020/128 194 204 238 362 400 758 1169 1301 1351 1381 1666 1851 1978
X-FTN-SEEN-BY: 5021/7 5022/5 5023/1 8 11 5024/1 5025/2 5027/16 5029/1 34 5030/23
X-FTN-SEEN-BY: 5030/115 251 818 5032/6 5033/4 5040/47 5042/8 5043/999 5045/7
X-FTN-SEEN-BY: 5049/256 5050/29 5050 5053/4 16 5055/92 5058/9 1000 5059/10 5061/7
X-FTN-SEEN-BY: 5061/15 5063/1 5064/2 5066/18 5070/66 5075/10 5077/3 28 5078/20
X-FTN-SEEN-BY: 5079/50 5080/80 5081/3 5083/13 21 5084/10 5085/100 5086/4 5090/2
X-FTN-SEEN-BY: 5094/5094 5095/4 5099/1 5100/8
X-FTN-PATH: 5000/79 44 5020/204 238
X-FTN-PATH: 5020/400
Lines: 41
Xref: freeland.kiev.ua fido7.ru.unix.bsd:13099

hi, there!

17 Sep 99 08:53, Alexander Shursha wrote to All:

AS> Можно ли заставить toupper() преобразовывать символы кирилицы
AS> к верхнему регистру? Перед этим вызывается
AS> setlocale(LC_ALL, "ru_SU.KOI8-R").

AS> Или надо ручками перекодировать?

----- foo3.c begins -----
#include <ctype.h>
#include <locale.h>

main()
{
char ch = 'а';

setlocale(LC_ALL, "ru_SU.KOI8-R");
printf("%c %c\n", ch, toupper(ch));
printf("%c %c\n", ch, toupper((unsigned char) ch));

return 0;
}
----- foo3.c ends -----

iclub:~$./foo3
а а
а А
iclub:~$

смысл понятен? во фре нужно к unsigned приводить потому что
_BSD_CT_RUNE_T имеет тип int (см. /usr/include/ctype.h,
/usr/include/machine/ansi.h)
сам накалывался один раз на такое -- в линуксе работал кусок кода, а во фре нет

ну а вообще правильнее делать setlocale(..., ""); и LANG или то что надо
в env'е выставлять

/fjoe

-- end of forwarded message --

-- 
С тем, что не помешает никогда,
                                               Kittle