Название: win + qDebug + QString + кириллица Отправлено: fland от Апрель 18, 2010, 15:20 имеется qt 4.6.2 под виндами. Проект с исходниками в UTF-8.
Вообще говоря нужно выполнить sql запрос с кириллицей. Трабла - кириллицы в нужном виде по получаю. Для начала мучаю просто QString и qDebug для получения вменяемого вывода там, тогда, думаю, и QString для запросов полечатся. Что имеется: Код: QTextCodec *codec = QTextCodec::codecForName("utf-8"); вывод: "ЄхёЄ" "N??╡N?N?" "N??╡N?N?" "ЄхёЄ" как можно вообще полечить эту кодировку??? Поиск по форуму не дал какого-то конечного совета, все советуют все разное и ничего недейственно (з.ы. на гугле не забанен...) Пробовал и такой вариант: Код: QTextCodec *codec = QTextCodec::codecForName("IBM866"); результат: "T┬жжT┴T┬" "a?д??a??a??a?д??a?д??" "N??╡N?N?" "ЄхёЄ" пробовал codecForName cp1251 - тож крякозяблы... upd интересное кино. Формирую запрос так: Код: QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); Название: Re: win + qDebug + QString + кириллица Отправлено: lit-uriy от Апрель 18, 2010, 18:01 Для вывода в консоль:
Код
Название: Re: win + qDebug + QString + кириллица Отправлено: fland от Апрель 18, 2010, 19:06 Для вывода в консоль: работает. Спасибо. Только вот как qDebug объяснить что он должен юзать consoleCodec - пока не ясно, для него то .setCodec не позовешь :(Код
Название: Re: win + qDebug + QString + кириллица Отправлено: lit-uriy от Апрель 18, 2010, 20:19 >>Только вот как qDebug объяснить что он должен юзать consoleCodec - пока не ясно, для него то .setCodec не позовешь
только переопределив вывод. Смотри тут (http://www.forum.crossplatform.ru/index.php?showtopic=781&view=findpost&p=4756) Там вместо fprintf(stderr, "Debug: %s\n", msg); можешь написать тот код что я привёл, разумеется QTextStream и его настройка нужна будет только в начале функции myMessageOutput Название: Re: win + qDebug + QString + кириллица Отправлено: fland от Апрель 18, 2010, 20:37 >>Только вот как qDebug объяснить что он должен юзать consoleCodec - пока не ясно, для него то .setCodec не позовешь спасибо. Такой вот еще вопрос. Ежели через qDebug высыпать что-то - появляется сразу. А ежели QTextStream использовать, то в самой консоли сообщение появляется в конце вызова функции, где и был этот вызов (а может и позже, а может и раньше), но в общем по коду вызов вывода через QTextStream идет до qDebug, а высыпается уже после него? Дело в каких-то приоритетах, али в чем?только переопределив вывод. Смотри тут (http://www.forum.crossplatform.ru/index.php?showtopic=781&view=findpost&p=4756) Там вместо fprintf(stderr, "Debug: %s\n", msg); можешь написать тот код что я привёл, разумеется QTextStream и его настройка нужна будет только в начале функции myMessageOutput Название: Re: win + qDebug + QString + кириллица Отправлено: BRE от Апрель 18, 2010, 20:42 Дело в каких-то приоритетах, али в чем? Думаю дело в буферизации. Почитай про flush в разделе QTextStream.Название: Re: win + qDebug + QString + кириллица Отправлено: lit-uriy от Апрель 18, 2010, 20:50 смотря что используется, по идее stderr без буферизации и, я думаю, QTextCodec(stderr) тоже доллжен быть без буферизации
Название: Re: win + qDebug + QString + кириллица Отправлено: fland от Апрель 18, 2010, 20:52 Думаю дело в буферизации. Почитай про flush в разделе QTextStream. в точку. СпасибоНазвание: Re: win + qDebug + QString + кириллица Отправлено: BRE от Апрель 18, 2010, 20:53 смотря что используется, по идее stderr без буферизации и, я думаю, QTextCodec(stderr) тоже доллжен быть без буферизации Сам QTextStream с буферизацией. Название: Re: win + qDebug + QString + кириллица Отправлено: SABROG от Апрель 19, 2010, 17:55 Всю ущербность затеи можно понять из этого решения:
Код
Использование текста отличного от английского в исходниках - изначально не верно. Название: Re: win + qDebug + QString + кириллица Отправлено: fland от Апрель 27, 2010, 19:05 Да про русс язык то все верно. Просто не хотелось связываться с переводами и Linguist. Как оказалось зря - вещь удобная и красивая. Переводы - наше все.
И вот вопросик вдогонку. Имеется ubuntu + qt linguist из общей сборки 4.2 + исходники проги в utf-8. Генерю файлы перевода через lupdate. Загружаю их в лингвист и мне русские символы крякозябликами показываются :(. Некритично, конечно (все равно добавил в приложение две локали - ru и en), но все же неудобно - приходиться лезть в creator и смотреть что же там было написано то (каюсь, нужно было сразу писать исходники на англ, а потом просто переводить). Но такой вопрос - а как-то можно вообще объяснить linguist что это utf-8 и что нужно то понимать русс символы? Али не стоит морочить из-за этого голову да и переписать все на англ и сделать норм перевод? Название: Re: win + qDebug + QString + кириллица Отправлено: crossly от Апрель 28, 2010, 12:47 укажите CODECFORTR в *.pro файле...
Название: Re: win + qDebug + QString + кириллица Отправлено: fland от Апрель 28, 2010, 22:03 укажите CODECFORTR в *.pro файле... сказалCODECFORTR = UTF-8 мне lupdate сказал что "таки ты гонишь у тебя указана ISO-какая-то (не помню уже)". Но сконвертил. Linguist открыл вообещ прикольно. В окошке Строки - все нормально, а в окошке Исходники и формы - кракозяблики... :) Название: Re: win + qDebug + QString + кириллица Отправлено: Const_Fi от Ноябрь 12, 2012, 16:10 Выдаёт что-то в таком духе:
Код: D:/soft/Qt/mkspecs/features/device_config.prf(12): Querying unknown property CRO В QLinguist русский в коде как был крякозябрами, так и остался. Знаю, что отличный от английского текст в коде -- не комильфо, но осадочек всё равно остался... |