Page 1 of 1

Печать и кодировка

Posted: Thu Sep 24, 2009 9:35 am
by Forest
Есть таблица. Пытаюсь её напечатать, используя wxHtmlEasyPrinting. Русские символы печатаются кракозябрами. В самой таблице все верно отображается, включая локализованные названия дней недели. Т.е. локаль настроена верно.
Куда копать?

Re: Печать и кодировка

Posted: Thu Sep 24, 2009 10:44 am
by tan
Forest wrote:Есть таблица. Пытаюсь её напечатать, используя wxHtmlEasyPrinting. Русские символы печатаются кракозябрами. В самой таблице все верно отображается, включая локализованные названия дней недели. Т.е. локаль настроена верно.
Куда копать?
Не совсем понятно, что это за "таблица"? Таблица в HTML файле? Или ты хочешь напечатать содержимое некого своего окна с таблицей используя wxHtmlEasyPrinting?

Posted: Thu Sep 24, 2009 10:56 am
by Forest
Мда... криво объяснил. Есть wxGrid, в котором есть какие-то данные. На экране все хорошо отображается. Теперь я делаю такой хтмл-текст:

Code: Select all

wxString text="";
	text+="<HTML><BODY>";
	text+="<TABLE width=\"100%\" cellspacing=\"0\" border=\"1\">";
	text+="<TR border=\"1\">";
	text+="<TH width=\"20%\">";
	text+=grid->GetColLabelValue(0);
	text+="</TH>";
	text+="<TH width=\"20%\">";
	text+=grid->GetColLabelValue(1);
	text+="</TH>";
	text+="<TH width=\"20%\">";
	text+=grid->GetColLabelValue(2);
	text+="</TH>";
	text+="<TH width=\"20%\">";
	text+=grid->GetColLabelValue(3);
	text+="</TH>";
	text+="<TH width=\"20%\">";
	text+=grid->GetColLabelValue(4);
	text+="</TH>";
	text+="</TR>";
	for(int i=0; i<grid->GetNumberRows(); i++){
		text+="<TR border=\"1\">";
		text+="<TD width=\"20%\">";
		text+=grid->GetCellValue(i, 0);
		text+="</TD>";
		text+="<TD width=\"20%\">";
		text+=grid->GetCellValue(i, 1);
		text+="</TD>";
		text+="<TD width=\"20%\">";
		text+=grid->GetCellValue(i, 2);
		text+="</TD>";
		text+="<TD width=\"20%\">";
		text+=grid->GetCellValue(i, 3);
		text+="</TD>";
		text+="<TD width=\"20%\">";
		text+=grid->GetCellValue(i, 4);
		text+="</TD>";
		text+="</TR>";
	}
	text+="</TABLE>";
	text+="</BODY></HTML>";
Т.е. из данных из wxGrid делаю хтмл-табличку, которую хочу распечатать.

Posted: Thu Sep 24, 2009 11:50 am
by T-Rex
Русские символы печатаются кракозябрами.
А нечего использовать ANSI-шные сборки ;)

Ну и попробуй там в meta вроде можно кодировку указать windows-1251

Code: Select all

<meta http-equiv=Content-Type content="text/html;charset=utf-8">

Posted: Thu Sep 24, 2009 12:18 pm
by tan
Ну, собственно T-Rex все объяснил :)

Могу только более полный пример привести:

Code: Select all

<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1251">
</HEAD>
<BODY LANG="ru-RU">
...


Posted: Thu Sep 24, 2009 12:34 pm
by Forest
Не работает :(
Попробую собрать Юникод-сборку wx. Надеюсь, что ничего остальное не посыпется.

Posted: Thu Sep 24, 2009 1:29 pm
by T-Rex
а мету ты вставил точно куда надо? перед Body?

Posted: Thu Sep 24, 2009 1:54 pm
by Forest

Code: Select all

text+="<HTML>";
	text+="<HEAD>";
	text+="<meta http-equiv=\"Content-Language\" content=\"ru\">";
	text+="<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">";
	text+="</HEAD>";
	text+="<BODY LANG=\"ru-RU\">";
	text+="<TABLE width=\"100%\" cellspacing=\"0\" border=\"1\">";

Posted: Fri Sep 25, 2009 12:49 pm
by Forest
Решение - использовать Юникод :)

Posted: Sat Sep 26, 2009 3:57 pm
by Mojo
Одной Юникод сборки может быть недостаточно, рекомендую добавить в инициализатор OnInit() или в MainFrame(wxWindow* parent) следующий код:

Code: Select all

wxLocale m_locale;
m_locale.Init(wxLANGUAGE_RUSSIAN);

Posted: Mon Sep 28, 2009 9:07 pm
by Forest
Mojo, есть такое))