Локализация консольной программы на с
Модератор: Модераторы разделов
-
- Сообщения: 318
- ОС: Debian 11
Локализация консольной программы на с
Надо чтобы сообщения выводимые printf отображались на консоли с UTF-8, а вывод в файл был в KOI8. Исходный текст программы в KOI8. Как правильно делать? Компилятор gcc. Посоветуйте что почитать.
-
- Сообщения: 694
Re: Локализация консольной программы на с
Проще всего держать два варианта строк: в koi8 и в utf8. Например в файлах.
И выводить их куда надо: одни - в консоль, другие - в файл.
Ну или man 3 iconv.
И выводить их куда надо: одни - в консоль, другие - в файл.
Ну или man 3 iconv.
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Локализация консольной программы на с
Поскольку возникновение вопроса кодировок подразумевает, что строки будут не в ASCII, то правильный ответ - использовать gettext для интер-/локализации. И никаких "код программы в кои8". А значит, надо почитать по нему доку и, возможно, что-то прояснится по ходу.
P.S.: Вообще постановка вопроса требует уточнений.
Исходный текст программы отконвертировать никто не мешает, если вы работаете на платформе где ютф уже используется, это как бы логично. Но про геттекст см. выше.
Язык, догадываюсь по printf, си. С си+ есть возможность поиграться с локалью для вывода в файл отдельно от стандартных потоков.
Плюс вопрос, что выводится в файл таки? Некие данные, или те же сообщения, что на консоль? Текст или бинарник? А то ведь можно этот вывод в файл просто через айконв по конвейеру и направить...
P.S.: Вообще постановка вопроса требует уточнений.
Надо чтобы сообщения выводимые printf отображались на консоли с UTF-8, а вывод в файл был в KOI8. Исходный текст программы в KOI8
Исходный текст программы отконвертировать никто не мешает, если вы работаете на платформе где ютф уже используется, это как бы логично. Но про геттекст см. выше.
Язык, догадываюсь по printf, си. С си+ есть возможность поиграться с локалью для вывода в файл отдельно от стандартных потоков.
Плюс вопрос, что выводится в файл таки? Некие данные, или те же сообщения, что на консоль? Текст или бинарник? А то ведь можно этот вывод в файл просто через айконв по конвейеру и направить...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 318
- ОС: Debian 11
Re: Локализация консольной программы на с
P.S.: Вообще постановка вопроса требует уточнений.
Код пишу сам в C, речь идет о сообщениях типа:
printf("Сообщение на русском\n");
Чтобы они печатались на консоли UTF-8 правильно, при кодировке исходного кода на KOI8,
и в тоже время в файл можно было выводить в KOI-8.
Сейчас вместо русских букв выводятся вопросики.
Не хочется загромождать код выводом заранее приготовленных строк.
man 3 iconv
Нет записи руководства для iconv в разделе 3
Код пишу сам в C, речь идет о сообщениях типа:
printf("Сообщение на русском\n");
Чтобы они печатались на консоли UTF-8 правильно, при кодировке исходного кода на KOI8,
и в тоже время в файл можно было выводить в KOI-8.
Сейчас вместо русских букв выводятся вопросики.
Не хочется загромождать код выводом заранее приготовленных строк.
man 3 iconv
Нет записи руководства для iconv в разделе 3
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Локализация консольной программы на с
kt315e писал(а): ↑24.05.2008 11:51Код пишу сам в C, речь идет о сообщениях типа:
printf("Сообщение на русском\n");
Чтобы они печатались на консоли UTF-8 правильно, при кодировке исходного кода на KOI8,
и в тоже время в файл можно было выводить в KOI-8.
Сейчас вместо русских букв выводятся вопросики.
Так и не уточнили, что выводится в файл. Если только сообщения, то сделайте вывод весь в ютф8, программу для работы с файлом запустите через конвейер с iconv и всех делов. Это самое простое.
Переходировать проще будет вывод в файл, а не работу с консолью. В файл один поток идет, а с консолью три.
Не хочется загромождать код выводом заранее приготовленных строк.
Вот для этого геттекст и применяется.
man 3 iconv
Нет записи руководства для iconv в разделе 3
У меня есть. А также iconv_open и прочие. Доку по либс тоже не отменили - айконв туда входит.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 318
- ОС: Debian 11
Re: Локализация консольной программы на с
Да сделаю вывод через конвеер. Спасибо.
-
- Сообщения: 318
- ОС: Debian 11
-
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: Локализация консольной программы на с
для локализации давно придуман gettext, не избретайте очередной велосипед.
http://ru.wikipedia.org/wiki/Gettext
http://ru.wikipedia.org/wiki/Gettext
все сказанное есть имхо...