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

но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
а как это (наличие строки не в Lain1) реализовать без библиотеки, а в своей программе знаешь?
Автор: kalifriki 6.2.2010, 23:22
Цитата(Litkevich Yuriy @ 6.2.2010, 23:15)

Цитата(kalifriki @ 7.2.2010, 1:42)

но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
а как это (наличие строки не в Lain1) реализовать без библиотеки, а в своей программе знаешь?
Не совсем понял

У меня строка должна быть обязательно в библиотеке (там помимо нее, конечно есть и функции, но сейчас дело их не касается). Как её получить в основной программе и вывести, например, на экран в нормальном виде, не кракозябрском.
Автор: Litkevich Yuriy 6.2.2010, 23:46
kalifriki, что-нибудь слышал про функции:
tr()
trUtf8()
codecFoTr()
?
Автор: kalifriki 6.2.2010, 23:55
Цитата(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 6.2.2010, 23:58
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
как пример
Автор: 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"));
Автор: kalifriki 7.2.2010, 1:33
Цитата(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"));
Большое спасибо. С проблемой разобрался