crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Получение из бд русских символов и их пересылка в php
Zizilk
  опции профиля:
сообщение 21.8.2010, 2:23
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.7.2010
Пользователь №: 1902

Спасибо сказали: 0 раз(а)




Репутация:   0  


Двигаюсь по своим задачам и столкнулся с проблемой.

Появилась необходимость получить из бд русские символы и отослать их в php по сокету.
Казалось бы всё хорошо и отлично получает, НО вместо вожделенного "Прайм" в php доходит "??N??°????".
Я слышал что бывают запары с кодировкой, но надеялся что инфу не будет перекодировать QT полученную из бд.
Как с этим бороться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.8.2010, 8:19
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Zizilk @ 21.8.2010, 6:23) *
Как с этим бороться?
для начала выясни, где проблема. Выведи в QLabel то что получил из БД. Если вывод корректный, значит проблема дальше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zizilk
  опции профиля:
сообщение 21.8.2010, 10:32
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.7.2010
Пользователь №: 1902

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня консольное приложение. Вывод в консоль такой-же некорректный, только вместо вопросиков -квадратики
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 21.8.2010, 10:38
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Цитата(Zizilk @ 21.8.2010, 10:32) *
У меня консольное приложение. Вывод в консоль такой-же некорректный, только вместо вопросиков -квадратики

для начала определи в какой кодировке у тебя база, в какой кодировке ты из нее получаешь данные и в какой кодировке нужно передать данные в пхп!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zizilk
  опции профиля:
сообщение 21.8.2010, 10:43
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.7.2010
Пользователь №: 1902

Спасибо сказали: 0 раз(а)




Репутация:   0  


баз в UTF8 а как определить в какой её получаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 21.8.2010, 10:48
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


для этого нужно знать КАК ты ее получаешь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.8.2010, 10:50
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Zizilk @ 21.8.2010, 14:32) *
Вывод в консоль такой-же некорректный, только вместо вопросиков -квадратики
в консоли своя собственная кодировка. поэтому выводить нужно так:
QTextCodec *outCodec = QTextCodec::CodecForName("кодировка консоли");
QTextStream out(stdout);
out.setCodec(outCodec);
out << myvar << endl;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zizilk
  опции профиля:
сообщение 21.8.2010, 10:55
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.7.2010
Пользователь №: 1902

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 21.8.2010, 11:50) *
Цитата(Zizilk @ 21.8.2010, 14:32) *
Вывод в консоль такой-же некорректный, только вместо вопросиков -квадратики
в консоли своя собственная кодировка. поэтому выводить нужно так:
QTextCodec *outCodec = QTextCodec::CodecForName("кодировка консоли");
QTextStream out(stdout);
out.setCodec(outCodec);
out << myvar << endl;


Ну мне гораздо важнее чтобы всё нормально выглядело в php на саму консоль мона сказать плевать(в неё выводил ток для дебага)



а получаю так
QString query="SELECT name FROM `Galaxy` where (`id`='"+QString::number(coord)+"');";
            qDebug()<<QTime::currentTime()<<"SL> querry "<<query;
            QSqlQuery squery;
            if (!squery.exec(query))
            {
                qDebug()<<QTime::currentTime()<<"SL> query wasn't execute !!! WTF you wrote in SQL sintax?? Oo";
                return QString::number(-2);
            }
            else
            {
                QSqlRecord rec = squery.record();
                if (squery.next())
                {
                    pname=squery.value(rec.indexOf("name")).toString();
                    qDebug()<<QTime::currentTime()<<"SL> pname "<<pname;
                }
                else
                    return QString::number(-1);
            }


Сообщение отредактировал Zizilk - 21.8.2010, 10:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 21.8.2010, 11:20
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


для начала проверь тип QVariant:
QVariant v = squery.value(rec.indexOf("name"));
if (v.type() == QVariant::ByteArray) {
  // print to console
  // тут будем раскодировать
} else if (v.type() == QVariant::String) {
  // print to console
  //
}


и ты не ответил, какую кодировку хочет пхп?

Сообщение отредактировал DIMEDROLL - 21.8.2010, 11:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.8.2010, 11:21
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Zizilk @ 21.8.2010, 14:55) *
Ну мне гораздо важнее чтобы всё нормально выглядело в php
Цитата(Litkevich Yuriy @ 21.8.2010, 12:19) *
для начала выясни, где проблема.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 14:28