LINUX.ORG.RU

[qt][mysql] Вместо кириллицы ????


0

1

qt 4.7.3 mysql 5.1.58 таблица - utf8 - default collation

Хочу qt подружить с mysql. Но пока не могу заставить mysql правильно выводить кириллицу. SET NAMES 'utf8'; перед запросами не помогает.

mysql> INSERT INTO smkp.camroom (idcamroom, room) VALUES (3, 'fdfвава'); Query OK, 1 row affected, 1 warning (0.05 sec)

mysql> SELECT * FROM smkp.camroom;

+----------------+----------+

| idcamroom | room |

+----------------+----------+

|____1____ | ??????? |

| ____2 ____ | fdf???? |

|____3_____| fdf???? |

|____13____| dfgh???? |

|____160___ | ??? |

+-----------------+----------+

mysql> SHOW COLLATION like 'utf%';

+--------------------+---------+-----+---------+----------+---------+

| Collation | Charset | Id | Default | Compiled | Sortlen |

+--------------------+---------+-----+---------+----------+---------+

| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |

| utf8_bin | utf8 | 83 | | Yes | 1 |

| utf8_unicode_ci| utf8 | 192 | | Yes | 8 |

mysql> SHOW VARIABLES like «char%»;

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

Может кто сталкивался.

Кодировка самого файла так же должна быть UTF-8

или:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QSqlQuery query;
query.exec(tr("INSERT INTO smkp.camroom (idcamroom, room) VALUES (3, 'fdfвава');"));

C_H_A_D_o ()

При чём здесь Qt?

Где конфиг MySQL? Где вся сессия с MySQL? Где SET NAMES 'utf8';?

r2d2 ()

Ещё покажи результат:
SHOW CREATE TABLE smkp.camroom;

C_H_A_D_o ()

Всем спасибо, я уже сделал. Когда менял у таблицы кодировку, у столбцов она старой оставалась. (я так думаю) Создал новую таблицу, все получилось. В my.cnf добавил только 3 строчки default-character-set=utf8 в [mysqld] [mysqldump] [mysql]

Andrey325 ()
Ответ на: комментарий от Andrey325

ты создавал новый QTableView в коде? или просто кинул новую на форму? поясни

если так, то тему можно отметить как решенную (есть такая ссылка под первым постом)

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Я создал новую таблицу в mysql. Как в приложении на qt, так и в консоли mysql кириллица стала нормально отображаться.

Andrey325 ()

QTextCodec *codec = QTextCodec::codecForName(«UTF-8»);
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);

VladimirMalyk ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.