Страница 1 из 1
[freebsd C] кодировка вывода
Добавлено: 2011-05-29 11:49:10
Gloft
Простеникий пример:
Код: Выделить всё
#include <stdio.h>
#include <wchar.h>
int main(){
wprintf(L"Привет!\n");
return 0;
}
Компилирую и запускаю:
Ничего не выводит.
Исходный файл программы сохранен в кодировке utf8, локаль консоли koi8-r.
Как правильно работать с русским текстом для корректного его отображения на консоле.
С учетом того что она может быть собрана и запущена на другой машине с другими параметрами окружения.
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-29 12:52:29
Гость
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-29 13:06:55
Gloft
Искал и читал обе ссылки.
Так как описано по ссылкам не работает.
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-29 15:56:06
Bayerische
Под Windows c данным гемороем тоже сталкивался
Код: Выделить всё
#include <iostream>
using namespace std;
int main()
{
system("chcp 1251 > nul");
cout << "привет" << endl;
return 0;
}
Типа, так. Или так:
Код: Выделить всё
#include <iostream>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout << "привет" << endl;
return 0;
}
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-30 7:47:45
Gloft
Приведенный пример это C++, меня интересует C и под freebsd.
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-30 15:37:13
Dambo
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-30 15:49:03
Dambo
Кстати 2 ссылка, что гость вам кинул там как раз FreeBSD рассматривают и gcc компилятор, вы её точно изучили и ни чего не получается?
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-31 19:39:01
Gloft
Во второй ссылке описан процесс компиляции.
Но ничего не написано о случае когда на одной и тойже машине могут с ПО работать несколько человек с разной кодировкой.
Это разовое решение, мне же интересно как сделать универсальный вариант.
Может я плохо понял описанное в статье? Поправте если я ошибаюсь.
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-31 19:50:19
Гость
с какой это разной кодировкой?
суть проблемы разложите
может и нет этой проблемы то?
вы хотите что бы один человек сидел в koi8-r кодировки файл правил
второй в utf8
третий в cp1251
и у всех было правильное отображение русский строк?
а не жирно вам будет?
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-31 19:59:35
Gloft
Вопрос один: как написать программу выводящую правильно строку "привет!" независимо от текущей кодировки консоли пользователя.
Да и не так уж и много я прошу помоему.
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-31 20:18:25
Гость
что значит не зависимо?
если у вас стоит китайская локаль
то русскими буками вы в ней никак не нарисуете
встречный вопрос
почему китайские программы не пишут по китайски в своих менюшках, названиях окон итд итп, на русских компьютерах?
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-31 20:23:06
Gloft
Один из вариантов отсутствие шрифтов.
Re: [freebsd C] кодировка вывода
Добавлено: 2011-05-31 20:25:48
Гость
это справедливо только для Юникода, где присутсвует все кодировки, и может не хватать только шрифта
а в случае если появляется другая кодировка, то одних шрифтов маловато
должна быть локализация всей системы
Re: [freebsd C] кодировка вывода
Добавлено: 2011-06-01 11:48:01
Dambo
Gloft писал(а):Вопрос один: как написать программу выводящую правильно строку "привет!" независимо от текущей кодировки консоли пользователя.
Да и не так уж и много я прошу помоему.
Вы можете вывести "правильно" только в той кодировке если там есть русские шрифты или их подобие.
Могу предложить способ велосипедный), по на создавать библиотек скомпилированных в разных кодировках, определять в стартовом приложении текущую кодировку локали и тащить подходящую библиотеку. Ещё(Очень давно) я видел в 1 приложении под контроллер(дос подобная ОС с хрен знает какой кодировкой, которая выводила русские буквы на жк), разработчик заранее составил словари и прям в исходники записывал крякозябры, которые в итоге нормально отображались там где их выводило ПО...