преобразование кодировок Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Tapok
Earned a small fee
Earned a small fee
Posts: 22
Joined: Sun Aug 12, 2012 3:41 pm

преобразование кодировок

Post by Tapok » Sun Aug 12, 2012 9:35 pm

Всем доброго времени суток...
Имеется файл в ascii, нужно его прочесть и конвертировать в utf8... Читаю в массив char`ов, загоняю в wxString

Code: Select all

wxString abc = wxString::FromAscii(datafile);
получаю строку в кодировке ISO 8859-1, а дальше все... я в ступоре. Вроде нужно использовать wxMBConv, но получить нужный результат мне не удалось :( да и помоему все они (методы класса) возвращают данные в массиве чаров, а это плохой код: массив чаров->строка->массив чаров - лишние телодвижения и перевыделения памяти. Собственно нужна функция конверта ascii/char[] - в utf8/wxChar[]. Буду благодарен.

PS code::blocks 10.05 + wxWidgets 2.8.12 + unicode bild

SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: преобразование кодировок

Post by SteelRat » Mon Aug 13, 2012 6:19 am

Не знаю, как в 2.8. У меня 2.9.5. Когда требуется работать с множеством кодировок использую wxEncodingConverter
Код понадёрган из моей программы. Лишь для примера.

Code: Select all

wxString	mEncodingName;
wxEncodingConverter mFromSystem;
wxEncodingConverter mToSystem;
bool mCanFromSystem;
bool mCanToSystem;

mEncodingName = wxFontMapper::Get()->GetEncodingName( (wxFontEncoding) mCurrentEncoding );  // если current encoding == wxFONTENCODING_DEFAULT - появится диалог выбора кодировки
// mCodeTxt->SetValue( mEncodingName );
mCanFromSystem = mFromSystem.Init( wxFONTENCODING_UNICODE, (wxFontEncoding) mCurrentEncoding );
mCanToSystem = mToSystem.Init( (wxFontEncoding) mCurrentEncoding, wxFONTENCODING_UNICODE );
wxString toConvert = "чёнить";
wxString convert = "N/A";
if ( mCanToSystem )
{
	convert = mToSystem.Convert( toConvert );
}
Win7/LinuxMint 17, VS2013/C::B, wxWidgets 3.0 x64

Tapok
Earned a small fee
Earned a small fee
Posts: 22
Joined: Sun Aug 12, 2012 3:41 pm

Re: преобразование кодировок

Post by Tapok » Wed Aug 15, 2012 7:36 am

Спасибо, работает!

Post Reply