Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Строка в DLL
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
kalifriki
Доброго времени суток. Проблема такая:
Я создал динамическую библиотеку, с единственной функцией, которая возвращает QString.
В своей программе подключаю эту библиотеку и вызываю этот метод. Если строка в библиотека набрана английскими символами все нормально, но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
Заранее спасибо.
Litkevich Yuriy
Цитата(kalifriki @ 7.2.2010, 1:42) *
но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
а как это (наличие строки не в Lain1) реализовать без библиотеки, а в своей программе знаешь?
kalifriki
Цитата(Litkevich Yuriy @ 6.2.2010, 23:15) *
Цитата(kalifriki @ 7.2.2010, 1:42) *
но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
а как это (наличие строки не в Lain1) реализовать без библиотеки, а в своей программе знаешь?

Не совсем понял :)
У меня строка должна быть обязательно в библиотеке (там помимо нее, конечно есть и функции, но сейчас дело их не касается). Как её получить в основной программе и вывести, например, на экран в нормальном виде, не кракозябрском.
Litkevich Yuriy
kalifriki, что-нибудь слышал про функции:
tr()
trUtf8()
codecFoTr()
?
kalifriki
Цитата(Litkevich Yuriy @ 6.2.2010, 23:46) *
kalifriki, что-нибудь слышал про функции:
tr()
trUtf8()
codecFoTr()
?

Слышал, погуглил, не понял как это может мне помочь.
CODE

lib.setFileName(fileName);
lib.load();
typedef QString (*Name) ();
if (name) {
QString temp = name();
setWindowTitle(temp);
}

В заголовке получаю кракозябры.
Rocky
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));


как пример
Litkevich Yuriy
Цитата(kalifriki @ 7.2.2010, 2:55) *
Слышал, погуглил, не понял как это может мне помочь.
самый простой способ, но и самый плохой:
где-то в коде строка с не латиницей:
QString s = tr("Привет мир");
, предположим, что кодировка этого файла - CP-1251 (Windows-1251)
тогда в функции main:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
kalifriki
Цитата(Litkevich Yuriy @ 7.2.2010, 0:14) *
Цитата(kalifriki @ 7.2.2010, 2:55) *
Слышал, погуглил, не понял как это может мне помочь.
самый простой способ, но и самый плохой:
где-то в коде строка с не латиницей:
QString s = tr("Привет мир");
, предположим, что кодировка этого файла - CP-1251 (Windows-1251)
тогда в функции main:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));


Большое спасибо. С проблемой разобрался :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.