Название: Локализация при перехвате qDebug [решено] Отправлено: xokc от Август 31, 2010, 20:24 Делаю локализацию для приложения и динамического плагина к нему. В главном приложении перехватываю qDebug и вывожу строки в QPlainTextEdit. Так вот строки из основного приложения туда выводятся нормально, а те, которые приходят из плагина выводятся кракозябрами. Как с эти бороться?
Название: Re: Кодировка в plugin при локализации в plugin Отправлено: break от Сентябрь 01, 2010, 00:56 Исходники плагина и приложения в одной кодировке?
В приложении функции setCodec использовались? В плагине они также использовались? Вообще строке в tr обертывывались? Название: Re: Кодировка в plugin при локализации в plugin Отправлено: xokc от Сентябрь 01, 2010, 20:08 Кодировки одинаковые. В главном приложении делал setCodecForTr(UTF-8). Пробовал и в плагине такое делать - не помогает. Строки в tr обертываются. Подозреваю, что где-то по дороге из QString в char * преобразовывается, но сегодня на работе не был (1 сентября - снова в школу!), завтра посмотрю еще.
Название: Локализация при перехвате qDebug Отправлено: xokc от Сентябрь 02, 2010, 10:45 Посмотрел. Плагины собственно ни причем оказались. Но проблема не рассосалась. Делаю примерно так:
Код
При локализации получаю вместо "Тест от qDebug" (локализация для "Test from qDebug") что-то вроде "Oano ec qDebug". При этом "Test from code" локализуется нормально. Куда копать? Название: Re: Локализация при перехвате qDebug Отправлено: Denjs от Сентябрь 02, 2010, 20:51 не скажу про вашу проблему, но : Код: qDebug() << text.toLocal8Bit().constData(); для виндовозной окнсоли так: Код: defaultLocaleCodec = QTextCodec::codecForName("IBM 866"); И ещё у меня почему-то был косяк однажды, в том, что пока я в самом классе не сделал "setCodecFor..." (tr или CString - уже не помню) - у меня русские буквы из этого qDebug-ов этого класса так-же в крякозяблы выставлялись.... но насчет этого я не могу сказать точно. данво дело было... Название: Re: Локализация при перехвате qDebug Отправлено: xokc от Сентябрь 03, 2010, 08:56 Но я же не в консоль вывожу, а в QPlainTextEdit. Как мне кажется, тут setCodecForLocale не совсем к месту. Буду пробовать.
Название: Re: Локализация при перехвате qDebug Отправлено: Denjs от Сентябрь 03, 2010, 09:20 Но я же не в консоль вывожу, а в QPlainTextEdit. Как мне кажется, тут setCodecForLocale не совсем к месту. Буду пробовать. Но выводите-же вы в косоль? и при выводе строка конвертируется в кодировку локали. Я конечно разбирался с этим более полугода назад, и точной истории появления сего куска кода у меня в main() я не помню, но "IBM 866" не с проста стоит, причем обрамленное в условную компиляцию - потому что под линуксом у меня defaultLocaleCodec - UTF-8. Название: Re: Локализация при перехвате qDebug Отправлено: xokc от Сентябрь 03, 2010, 10:02 Но выводите-же вы в косоль? Вывожу НЕ В КОНСОЛЬ - на экран в GUI в QPlainTextEditНазвание: Re: Локализация при перехвате qDebug Отправлено: xokc от Сентябрь 03, 2010, 10:06 В общем, сделал. Надо было сделать setCodecForLocal(codecForName("UTF-8"), а в перехватчике qDebug делать fromUtf8 перед записью в log.
|