Date: Sat, 12 Aug 2006 17:51:01 +0400 (MSD) From: "Andrey V. Elsukov" <bu7cher@yandex.ru> To: freebsd-stable@freebsd.org Cc: maxim@freebsd.org Subject: setlocale howto Message-ID: <44DDDCC5.000001.21350@pantene.yandex.ru>
next in thread | raw e-mail | index | archive | help
Hi, All.
I have one question, how use setlocale?
My system is FreeBSD 6.1-STABLE.
A simple test program:
#include <ctype.h>
#include <locale.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
const char* loc="ru_RU.KOI8-R";
int i;
char *loc_ret;
char buf[]="тестовая строка abcdef";
loc_ret = setlocale(LC_CTYPE, loc);
if (!loc_ret) return (-1);
printf("original string = %s\n", buf);
for(i = 0; i < sizeof(buf); i++)
buf[i] = (char)toupper(buf[i]);
printf("toupper string = %s\n", buf);
return (0);
}
This programm don't work correctly. Cyrillic symbols don't converted to upper case.
But in the same time perl programm work fine:
use locale;
use POSIX qw(locale_h);
my $str = "тестовая строка abcdef";
setlocale(LC_CTYPE, "ru_RU.KOI8-R");
print uc ($str);
What is wrong?
--
WBR, Andrey V. Elsukov
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44DDDCC5.000001.21350>
