Страница 1 из 1

gcc русские символы

Добавлено: 2010-08-05 12:14:20
yandzee
Написал программу простецкого содержания, с сообщениями по русски.
Скомпилировал gcc version 4.2.1 20070719 [FreeBSD]

Вывод:

%./prog
п п?п?п?п? п?п?я? п?я?п?п?п?я?п? я?п?п?я?п?п??
warning: this program uses gets(), which is unsafe.
f
fп©п?я?п?п?я? п?п?п? я?я?п?я?я?п? п?п?п?п?п?п?п?.
п©п?я?п?п?я? п?п?п? я?я?п?я?я?п? п?п?п?п?п?п?п?.

Как сделать нормальный вывод русский букв?

P.S. Еще прям в сюда вывел warning:.. а это как убрать?

Re: gcc русские символы

Добавлено: 2010-08-05 12:57:32
hizel

Код: Выделить всё

man gets 
:)

Re: gcc русские символы

Добавлено: 2010-08-05 15:47:00
yandzee
а что с русскими символами то делать?

Re: gcc русские символы

Добавлено: 2010-08-05 21:52:10
rmn
кодировка в консоли какая? utf-8?
Значит и сорцы в utf-8 пиши.

Re: gcc русские символы

Добавлено: 2010-08-06 19:41:05
yandzee
Переписал програмку через ee, при выполнении отобразился русский текст, а в редакторе были непонятные символы.

Ну это ee. Я использую gedit, как там сменить кодировку в UTF-8?

Re: gcc русские символы

Добавлено: 2010-08-06 20:32:50
rmn
лучше научиться писать приложения, не зависящие от кодировки терминала.

Re: gcc русские символы

Добавлено: 2010-08-08 16:57:38
Гость
ee(1) и vi(1) не поддерживают юникод. Это никак не зависит от терминала или локали, они просто написаны для 8битных кодировок.

Re: gcc русские символы

Добавлено: 2011-06-09 9:51:32
Gloft
rmn писал(а):лучше научиться писать приложения, не зависящие от кодировки терминала.
Есть какие-либо статьи на эту тему?

Re: gcc русские символы

Добавлено: 2011-06-09 12:39:16
rmn
Gloft писал(а): Есть какие-либо статьи на эту тему?
в гугле есть (i18n, l10n). Простейший вариант - обертка над printf:

Код: Выделить всё

void my_printf(char* fmt, ...)
{
        va_list args;
        char Buffer[1024]="";
        va_start(args, fmt);
        vsprintf(Buffer, fmt, args);

        // ...
        // определяем кодировку терминала и если она отличается от кодировки
        // программы, конвертируем строку в Buffer с помощью iconv()
        // ...

        printf(Buffer);
        va_end(args);
}
и в коде все вызовы printf() заменяем на my_printf()

Re: gcc русские символы

Добавлено: 2011-06-09 12:45:19
Bayerische