Qt определение вывода ошибок в определенной кодировке (для русского текста)



  • Здравствуйте.
    Имеются исходники в формате utf-8
    @QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect("Srvr="172.0.0.100";Ref="base1";Usr="1C-Bot";Pwd="56q";")");
    QAxObject * ab = ac->querySubObject("NewObject",QObject::tr("Справочники.Контрагенты"));@

    При выполнении имеется сообщение об ошибке
    @QAxBase: Error calling IDispatch member NewObject: Exception thrown by server
    Code : 1001
    Source : 1C:Enterprise 8.2.15.319
    Description: ??? ?? ????????? '???????????.???????????'
    Help :
    Connect to the exception(int,QString,QString,QString) signal to catch t
    his exception@

    Т.е. 1С сервер сообщает какую-то ошибку на русском языке.
    Вопрос - как сделать вывод ошибок, чтобы отображались русские буквы? Я предполагаю что нужно с кодировкой "по играться", но как переопределить глобальный вывод ошибок? Может есть какой-то глобальный флаг?



  • Добрый день.
    Можно глобально установить для программы кодировку:
    @QTextCodec::setCodecForTr(QTextCodec::codecForName ("Windows-1251"));
    //Вместо Windows-1251 указываете кодировку в которой 1С передает информацию@



  • В qt 5 такой функции уже нет, но даже если попробовать так:
    @QTextCodec::setCodecForLocale(QTextCodec::codecForName ("Windows-1251"));@
    То всёравно вывод ошибки QAxBase будет вопросиками, даже если все кодировки перебрать(но при этом если через кудебаг или сиоут выводить текст, то да, меняется кодировка, а вот кодировка ошибки не меняется )



  • Тогда попробуйте "этот (qtextdecoder) ":http://qt-project.org/doc/qt-5.0/qtcore/qtextdecoder.html класс (сам не пробовал).


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.