Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UTF-8 в SELECT, проблемы с выбором из БД 
V
    Опции темы
Kefir
Дата 11.2.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Начал я делать сайт с возможностью добавлять языки и решил, что всё будет в UTF-8. HTML содержит указание кодировки, таблицы БД сделаны с параметром utf8, при коннекте выполняю SET NAMES 'utf8'. Вывод в скрипте (при выборе всех записей таблицы) - работает беупречно. Никаких крякозябр нету. Однако, есть проблема - если я хочу выбрать все страницы на русском в селекте я пишу
Цитата

... WHERE language='Русский' ...

Слово "русский" берётся из $this->language и переменная запроса в БД на команду mb_detect_encoding говорит, что она - UTF-8. Вроде всё хорошо и запрос даже выполняется, однако в результсете нет ни одного результата.
Если в MySQL Query Browser выбрать все записи из таблицы можно увидеть, что слово "Русский" вышлядит так: "РуÑ?Ñ?кий" и если подставить это в запрос к БД, то все нужные страницы без проблем появляются в результате запроса... 3й час сижу и не могу найти выхода (идея пока одна - задавть язык числом, но это чисто workaround).
Помогите!
PM MAIL WWW Skype   Вверх
Kefir
Дата 11.2.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Люди! Помогите - БД по-моему с ума сходит. Вот скрипт, на котором я тестирую сейчас запросы к БД:
Код
    mysql_connect("localhost", "root", "");
    mysql_select_db("main");
    $q = "SET NAMES 'utf8'";
    mysql_query($q);
    echo mysql_error();
    mysql_query("INSERT INTO pages (title, language) values('Траляля', 'Русский');");
    echo mysql_error();
    mysql_close();

В базу на место title добавляются вопросики вместо букв, а в language появляется "Русский" - т.е. то что и просили! Т.е. в одном запросе одна часть выполняется правильно, а другая запарывается. Ещё пара часиков такими темпами и у меня поедет крыша... smile

Это сообщение отредактировал(а) Kefir - 11.2.2006, 23:25
PM MAIL WWW Skype   Вверх
sergejzr
Дата 11.2.2006, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 2
Всего: 360



По видимому у тебя колонки разной кодировки. Каждую можешь попробовать поменять так:

Код

ALTER TABLE myTable MODIFY myColumn VARCHAR(255) CHARACTER SET utf8;


Всю таблицу так:
Код

ALTER TABLE tableName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


Точно не могу сказать. Сам мучался пару дней последних (только с явой). Потом оказалось, что например set names не надо делать. Вообще смог не переконвертируя работать.

Попробуй верхние варианты, потом посмотрим.



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Kefir
Дата 11.2.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



sergej.z, +1. Точный и чёткий ответ!
Первый вариант сразу исправил ситуацию.
Гм... я понятия не имел, что там ещё и для колонок кодировку надо проставлять... это что же - для каждого поля в таблице писать utf теперь?.. унылая перспектива. Я думал, что проставляя кодировку у таблицы я проставляю её для всех полей...
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.