Проблема с SELECT
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Проблема с SELECT Expand / Collapse
Автор
Сообщение
19.06.2006 20:29


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
 Доброе время суток!

 В MySQL дынные, записанные с PHP отображаются в таблице не так как хотелось бы, но если эти же данные потом считывать в PHP и отображать на странице, то вроде все даже очень ничего.
 А вот если данные ввести через, скажем, MySQL Query Browser, то PHP эти данные считает как ????????.
 Т.к. все данные идут с PHP и выводит их же потом PHP, я закрыл глаза на этот недостаток.

 Но сегодня сталкнулся со следующей проблемой, которая, как я понимаю, тесно связана с вышеописанной проблемой.

 В базе записано имя пользователя на русском языке, например ввели "Черепаха", в MySQL это выглядит "×åðåïàøêà". Не очень красиво..
 Видно что пользователь зарегистрировался с большой буквы. Если в MySQL сделать запрос SELECT * WHERE login='черепаха' and password='xxxx', то в ответ ничего не получим. А если запрос сделать с большой буквы, то получим ответ.

 Если все тоже проделывать с английскими логинами, такой проблемы нет.

 Очевидно, что надо что-то делать с кодировкой.

 Сохранять данные с нижним регистром не предлагайте, этот вариант не подойдет, хоть и верный.

Сообщ. #899139
19.06.2006 20:43


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
 У меня мультиязычная поддерка стоит в настройке.. т.к. мне необходимо записывать данные не только на русском и английском языках в одну таблицу.
Сообщ. #899140
19.06.2006 21:33
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
по-моему проблема в разнице кодировок БД и php. для того, чтобы узнать default кодировку сервера, выполни в MySQL:

show variables;

и смотри значение "character_set". меняется при помощи

SET CHARACTER SET xyz

или в конфигфайлах.

по теме

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
http://dev.mysql.com/doc/refman/4.1/en/charset-conversion.html

Сообщ. #899142
20.06.2006 8:31


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.03.2008 15:26
Сообщ.: 701, Visits: 7 028
Проблема известная.

Я решал её так - перед выполнением запроса исполнял команду (как SQL запрос)

SET NAMES 'cp1251'

После этого все отображалось правильно.

Поменять настройки шрифтов не получилось, как ни старался.

Команды установки системных переменных MySQL не срабатывали.

Но на хостинге у провайдера как правило все выставлено хорошо,

так что это (IMHO) проблема только локального MySQL.

Сообщ. #899154
20.06.2006 11:05


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
 Кодировку менять получалось, только это никак не отражалось на записываемые данные.

 А по поводу cp1251 - мне это ведь не подойдет, т.к. у меня не только на русском и английском языке заполняются таблицы.

 На данный момент стоит кодировка utf8..

 Кстати.. Пока писал подмал, данные в ДБ нужно записывать в utf8, а PHP помоему по стандарту какую-то другую использует, iso если не ошибаюсь. Попробую позже.

Сообщ. #899172
20.06.2006 11:10


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
 Посмотрел в PHP
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
закоментарина строка, значит не iso.
Сообщ. #899174
20.06.2006 13:20
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
для начала ты должен понять что для того чтобы не было проблем кодировки во всех местах должны совпадать. сейчас же ты что делаешь? ты записываешь из php непонятно в чем в БД, где стоит настройка на utf и пытаешься клиентским ПО прочитать то, что записал

во-первых utf для русского и английского не обязателен, смотри на этот сайт - он в 1251

во-вторых для теста приведи все к одной локали. локаль в php устанавливается например так setlocale(LC_ALL, "ru_RU.CP1251"); Обрати внимание, что смена настроек в БД/PHP не приведет к автоматической перекодировке тех данных что уже хранятся в БД

Сообщ. #899205
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 8:50