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

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Forest
Knows some wx things
Knows some wx things
Posts: 39
Joined: Fri Feb 06, 2009 3:58 pm

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

Post by Forest » Thu Sep 24, 2009 9:35 am

Есть таблица. Пытаюсь её напечатать, используя wxHtmlEasyPrinting. Русские символы печатаются кракозябрами. В самой таблице все верно отображается, включая локализованные названия дней недели. Т.е. локаль настроена верно.
Куда копать?
Sorry for lame English... :)

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

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

Post by tan » Thu Sep 24, 2009 10:44 am

Forest wrote:Есть таблица. Пытаюсь её напечатать, используя wxHtmlEasyPrinting. Русские символы печатаются кракозябрами. В самой таблице все верно отображается, включая локализованные названия дней недели. Т.е. локаль настроена верно.
Куда копать?
Не совсем понятно, что это за "таблица"? Таблица в HTML файле? Или ты хочешь напечатать содержимое некого своего окна с таблицей используя wxHtmlEasyPrinting?
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

Forest
Knows some wx things
Knows some wx things
Posts: 39
Joined: Fri Feb 06, 2009 3:58 pm

Post by Forest » Thu Sep 24, 2009 10:56 am

Мда... криво объяснил. Есть 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 делаю хтмл-табличку, которую хочу распечатать.
Sorry for lame English... :)

User avatar
T-Rex
Moderator
Moderator
Posts: 1189
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Thu Sep 24, 2009 11:50 am

Русские символы печатаются кракозябрами.
А нечего использовать ANSI-шные сборки ;)

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

Code: Select all

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

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Thu Sep 24, 2009 12:18 pm

Ну, собственно T-Rex все объяснил :)

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

Code: Select all

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

OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

Forest
Knows some wx things
Knows some wx things
Posts: 39
Joined: Fri Feb 06, 2009 3:58 pm

Post by Forest » Thu Sep 24, 2009 12:34 pm

Не работает :(
Попробую собрать Юникод-сборку wx. Надеюсь, что ничего остальное не посыпется.
Sorry for lame English... :)

User avatar
T-Rex
Moderator
Moderator
Posts: 1189
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Thu Sep 24, 2009 1:29 pm

а мету ты вставил точно куда надо? перед Body?

Forest
Knows some wx things
Knows some wx things
Posts: 39
Joined: Fri Feb 06, 2009 3:58 pm

Post by Forest » Thu Sep 24, 2009 1:54 pm

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\">";
Sorry for lame English... :)

Forest
Knows some wx things
Knows some wx things
Posts: 39
Joined: Fri Feb 06, 2009 3:58 pm

Post by Forest » Fri Sep 25, 2009 12:49 pm

Решение - использовать Юникод :)
Sorry for lame English... :)

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo » Sat Sep 26, 2009 3:57 pm

Одной Юникод сборки может быть недостаточно, рекомендую добавить в инициализатор OnInit() или в MainFrame(wxWindow* parent) следующий код:

Code: Select all

wxLocale m_locale;
m_locale.Init(wxLANGUAGE_RUSSIAN);
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Forest
Knows some wx things
Knows some wx things
Posts: 39
Joined: Fri Feb 06, 2009 3:58 pm

Post by Forest » Mon Sep 28, 2009 9:07 pm

Mojo, есть такое))
Sorry for lame English... :)

Post Reply