Page 1 of 1

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

Posted: Sun Aug 12, 2012 9:35 pm
by Tapok
Всем доброго времени суток...
Имеется файл в 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

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

Posted: Mon Aug 13, 2012 6:19 am
by SteelRat
Не знаю, как в 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 );
}

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

Posted: Wed Aug 15, 2012 7:36 am
by Tapok
Спасибо, работает!