Название: Непонятности с кодировками Отправлено: cresta от Март 21, 2009, 14:38 Добрый день. Есть проблема с кодировками. Может дело и не в самой qt, а может и в ней.
Таблица №1: Код: CREATE TABLE `table2` ( Таблица №2: Код: CREATE TABLE `users` ( Collation в обоих случаях cp1251_general_ci Почему при чтении из первой таблицы требуется установить SET NAMES cp1251, а при чтении из второй utf8 ? Это бага qt или mysql? Название: Re: Непонятности с кодировками Отправлено: _OLEGator_ от Март 21, 2009, 16:27 скорее всего mysql, "SET NAMES cp1251" я вызывал при использовании mysql в php, иначе кодировка была неверной.
возможно это еще зависит от версии mysql. Название: Re: Непонятности с кодировками Отправлено: cresta от Март 21, 2009, 20:55 Похоже, что это QSqlQuery голову морочит:
Создал базу данных с нуля, опять две таблицы с DEFAULT CHARSET cp1251. И опять из одной таблицы читается нормально, из другой кракозябрами, от которых можно избавиться только через set names utf8. Для проверки состряпал сайтик с таким php-скриптом: Цитировать <? mysql_connect("localhost", "root", "") or die ("Could not connect"); mysql_select_db ("seller") or die ("Could not select database"); mysql_query("SET NAMES cp1251"); $query = "SELECT * FROM `users`"; $a = mysql_query($query); while ( $r=mysql_fetch_assoc($a) ){ echo $r['user']; ?><br><? echo $r['password']; ?><br><? } ?> Все шикарно отбражается. А из Qt при обращении к этой таблице кракозябры, пока не сделаешь SET NAMES utf8 Название: Re: Непонятности с кодировками Отправлено: BaltikS от Март 22, 2009, 00:24 скорее всего mysql, "SET NAMES cp1251" я вызывал при использовании mysql в php, иначе кодировка была неверной. +1, какая версия MYSQL? если 5, то что что то подобное я припоминаю....возможно это еще зависит от версии mysql. Название: Re: Непонятности с кодировками Отправлено: cresta от Март 22, 2009, 00:52 версия пятая. Погуглил, такая ошибка довольно часто встречается, вот только из способов её решения ни один не дал результата.
Если дело в конфигурации сервера/клиента mysql, то почему php корректно работает с кодировками, а qt - нет? И что делать? Переходить на utf8? Или на koi8-r ? P.S. Сейчас вот ещё посмотрел утилитой mysql.exe: всё шикарно отображается. Название: Re: Непонятности с кодировками Отправлено: BaltikS от Март 22, 2009, 01:09 У меня была кодировка win1251 и слдующие запросы спасали...
Код: set character_set_client='cp1251; Название: Re: Непонятности с кодировками Отправлено: cresta от Март 22, 2009, 01:15 Эти варианты я пробовал:
character_set_database character_set_server character_set_client character_set_results Название: Re: Непонятности с кодировками Отправлено: BaltikS от Март 22, 2009, 01:34 ТОгда я сдаюсь ???
Название: Re: Непонятности с кодировками Отправлено: Kalombo от Март 22, 2009, 09:55 Попробуй всё-таки себя убедить, что это не баг, а ты не нашел ошибку, сколько раз такое было, что мелочи какой-то не замечал, думал баг, потом обнаруживалась моя невнимательность. С MySQL тоже был подобное было, было несколько таблиц, ну представим, что две, в одну данные добавлялись, в другую нет, везде кодировка стояла cp-1251, понять не мог в чем причина. На форуме спрашивал, думал как там эти кодировки конвертировать и т.д., тоже эксперименты проводил, которые подтолкнули меня на вывод, что это баг Qt, а потом с помощью MySQL Administrator зашел и увидел, что для той таблицы, в которую не добавлялись данные у колонок не стоит нужная кодировка.
|