converting to execution character set: Illegal byte sequence
converting to execution character set: Illegal byte sequence
Добрый день!
Я начинаю осваивать wxWidgets. И сразу столкнулся с ошибкой, связанной с выводом сообщений на русском языке.
wxMessageBox(wxT("Ошибка!"));
На такие вот строчки компилятор и ругается. Посмотрел в сети, предлагали лечить при помощи
-finput-charset=windows-1251
Однако и на это тоже я получаю ошибку:
cc1plus.exe: internal compiler error: Aborted
Я так понимаю, что вопрос не совсем связан с wxWidgets, однако помогите новичку Как всё-таки справляться с русским текстом?
Я начинаю осваивать wxWidgets. И сразу столкнулся с ошибкой, связанной с выводом сообщений на русском языке.
wxMessageBox(wxT("Ошибка!"));
На такие вот строчки компилятор и ругается. Посмотрел в сети, предлагали лечить при помощи
-finput-charset=windows-1251
Однако и на это тоже я получаю ошибку:
cc1plus.exe: internal compiler error: Aborted
Я так понимаю, что вопрос не совсем связан с wxWidgets, однако помогите новичку Как всё-таки справляться с русским текстом?
OS: WinXP, compiler: GCC 3.4.5, wxWidgets 2.8.10
Re: converting to execution character set: Illegal byte sequ
Будет лучше если ты еще выложишь лог компилятора. У меня диалоги с русскими буквами нормально работают без специальных параметров в configure.san4es wrote:И сразу столкнулся с ошибкой, связанной с выводом сообщений на русском языке.
wxMessageBox(wxT("Ошибка!"));
На такие вот строчки компилятор и ругается.
И исходник у тебя, судя по всему, небольшой - выложи и его.
Win XP (SP0), mingw, wx 2.9.0
Re: converting to execution character set: Illegal byte sequ
IDE - CodeBlocks
Код такой:
Build log:
Код такой:
Code: Select all
if(wxFile::Exists(wxT("MGI.xml")))
{
mgi_bib_db = new XMLBiblioDB(wxT("MGI.xml"));
bDBLoaded = true;
}else
{
wxMessageBox(wxT("Ошибка! Отсутствует файл базы данных!"));
bDBLoaded = false;
}
Code: Select all
-------------- Build: Release in wxBiblio ---------------
Compiling: wxBiblioMain.cpp
C:\backup\Programming\wxBiblio\wxBiblioMain.cpp:97:1: converting to execution character set: Illegal byte sequence
C:\backup\Programming\wxBiblio\wxBiblioMain.cpp:134:1: converting to execution character set: Illegal byte sequence
Process terminated with status 1 (0 minutes, 7 seconds)
2 errors, 0 warnings
OS: WinXP, compiler: GCC 3.4.5, wxWidgets 2.8.10
Да, собирал с Unicode=1, для проекта в CodeBlocks тоже указал Unicode. А насчёт исходников - значит ли это, что надо конвертнуть исходник в UTF-8 для надёжности, поскольку я его редактировал и наверное внёс win1251?borr_1 wrote:А по второму вопросу - если стоит wxUSE_UNICODE в дефинесах. Все исходники должны быть в UTF-8 а не в win1251
Как собиралось wxWidgets с ключом Unicode=1?
OS: WinXP, compiler: GCC 3.4.5, wxWidgets 2.8.10
Тогда пример в студию!SmileGobo wrote:В том то и дело что нет. Это так странно ведет себя строка после использования Trim().
И исходники функции есть же, можно в отладке посмотреть.
Code: Select all
// some compilers (VC++ 6.0 not to name them) return true for a call to
// isspace('\xEA') in the C locale which seems to be broken to me, but we have
// to live with this by checking that the character is a 7 bit one - even if
// this may fail to detect some spaces (I don't know if Unicode doesn't have
// space-like symbols somewhere except in the first 128 chars), it is arguably
// still better than trimming away accented letters
inline int wxSafeIsspace(wxChar ch) { return (ch < 127) && wxIsspace(ch); }
// trims spaces (in the sense of isspace) from left or right side
wxString& wxString::Trim(bool bFromRight)
{
// first check if we're going to modify the string at all
if ( !empty() &&
(
(bFromRight && wxSafeIsspace(GetChar(length() - 1))) ||
(!bFromRight && wxSafeIsspace(GetChar(0u)))
)
)
{
if ( bFromRight )
{
// find last non-space character
reverse_iterator psz = rbegin();
while ( (psz != rend()) && wxSafeIsspace(*psz) )
psz++;
// truncate at trailing space start
erase(psz.base(), end());
}
else
{
// find first non-space character
iterator psz = begin();
while ( (psz != end()) && wxSafeIsspace(*psz) )
psz++;
// fix up data and length
erase(begin(), psz);
}
}
return *this;
}
Я gdb не использовал, но насколько я знаю он позволяет загружать отладочную информацию. А вот в случае будет ли он работать в отладке динамических библиотек ничего не скажу.borr_1 wrote:Если я имею gdb отладчик и wxWidgets уже скомпилированную как динамическая библ. Как я могу в ней что-то отладить?
Если не получится отладить, то можно скопировать исходники в приложение и там проверить.