Кодировки в Red Hat и Fedora
Я просто и с уважением прошу помощи У участников форума, которые, я уверен, знают linux значительно лучше меня.У меня следующая беда: ранее я написал несколько программ, работающих в Red Hat 7.3 Изображение на экране формировалось с помощью библиотеки curses включало в себя буквы русского алфавита и псевдографические символы(в кодировке KOI8-R). Все успешно работало. Но мне нужно, чтобы это же ПО выполнялось и в Fedora 2.6.35.14 А в этой версии ОС вместо символов псевдографики на экране отображаются латинские заглавные буквы с значком ~ впереди, вместо русских букв отображаются уменьшенные знаки вопроса. Перекомпилировался в новой ОС с новым gss - результат тот же Присвоил переменной окружения LANG значение ru_RU.KOI8-R (по умолчанию было ru_RU.UTF-8) тоже ничего не изменилось.Пробовал изменить текст программы: выдавать на экран псевдографику в формате UTF-8 но на каждую позицию экрана выдается один байт а кодировка трехбайтовая и это опять чушь. В общем, нахожусь в тупике, очень нуждаюсь в совете. Ниже привожу текст минимального примера. #include <stdio.h> #include <curses.h> int mi1,mi2,KWGT; char rstr[100],rstr1[100],rstr2[100];
main(int argc,char **argv) { initscr(); attrset(A_NORMAL); erase(); start_color(); init_pair(1,COLOR_BLUE,COLOR_WHITE); init_pair(2,COLOR_WHITE,COLOR_BLUE); init_pair(3,COLOR_YELLOW,COLOR_BLUE); init_pair(4,COLOR_BLACK,COLOR_WHITE); keypad(stdscr,TRUE); noecho(); nodelay(stdscr,TRUE);
attrset(COLOR_PAIR(3)); attron(A_BOLD); for(mi1=1;mi1<82;mi1++) {rstr[mi1]=' ';rstr1[mi1]=' ';rstr2[mi1]=0200;} rstr2[0]=0202;rstr2[mi1-3]=0203;rstr2[mi1]=0;rstr1[mi1-1]=0; mvaddnstr(0,0,rstr2,mi1-2); rstr[0]=0201;rstr[1]=0x20;rstr1[0]=0x20;rstr1[1]=0201;rstr[2]=0;rstr1[2]=0; attrset(COLOR_PAIR(3)); attron(A_BOLD); for(mi2=1;mi2<24;mi2++) { mvaddnstr(mi2,0,rstr,2); mvaddnstr(mi2,78,rstr1,2); } attrset(COLOR_PAIR(3)); attron(A_BOLD); rstr2[0]=0204;rstr2[mi1-3]=0205;rstr2[mi1]=0; mvaddnstr(24,0,rstr2,mi1-2); rstr2[0]=0206;rstr2[mi1-3]=0207;rstr2[mi1]=0; mvaddnstr(2,0,rstr2,mi1-2); attrset(COLOR_PAIR(2)); attron(A_BOLD); for(mi1=0;mi1<79;mi1++) rstr[mi1]=' '; sprintf(&rstr[3],«ВНИМАНИЕ - ATTENTION - 1,2,3 - А,Б,В,Г,Д, а,б,в,г,д - A,B,C,D,E, a,b,c,d,e»); for(mi1=1;mi1<82;mi1++) if(rstr[mi1]==0) rstr[mi1]=' '; mvaddnstr(1,1,rstr,78);
a2:refresh(); a1:KWGT=wgetch(stdscr); if(KWGT==ERR) goto a1; } Ниже представлено правильно сформированное данной программой изображение в Red Hat Простите, фотографию поставить не получилось, поставлю ссылку. http://s45.radikal.ru/i107/1408/b3/ec96e1960674.jpg А это - искаженное изображение в Fedora 14 здесь на консоли в графике, но также и в текстовом режиме. http://s017.radikal.ru/i407/1408/8d/950120825ce5.png Еще раз благодарю за внимание и очень прошу помощи