#1
|
|||
|
|||
mySQL на хостинге: различие российских и американских хостеров.
У меня есть проекты (движки стандартные, только наполнение баз разное) на российских и американских хостах.
Недавно заметил одну нехорошую особеность. На российских хостах поиск отрабатывает точно, возвращает именно те записи базы которые удовлетворяют условию запроса. А на тех рускоязычных сайтах что хостятся на американских шаред хостингах, не правильно работает скрипт поиска в mySQL базе. Возвращается куча записей которые не должны возвращаться. Нап***ер на совершенно глупый запрос "like %aaaa%" на российских хостах ничего не возвращается, что вполне логично т.к. такой строки нет в базе. А на американских хостах на этот запрос возвращается куча записей... в которых реально нет этой строки. Отчего это может быть и как фиксить? П.С. Под "российский" я подразумеваю хостинг российской фирмы т.е. обслуживаемый русским сапортом. Под "американский" подразумеваю чисто американский хостинг ( причем качественный, мои акки на resellerzoom.com, sonet7.com, etc) |
#2
|
|||
|
|||
Настройка mysql. Фиксить скорее всего никак, так как нужно редактировать my.cnf к которому доступа на виртуалхостинге нет
|
#4
|
|||
|
|||
все решилось установкой вот такой строки
@mysql_query("SET NAMES utf8"); // для корректного поиска на американском хостинге после этого поиск по русским полям базы начал работать нормально.... |
#5
|
|||
|
|||
Цитата:
А таких скриптов очень много. Чтобы они заработали правильно нужно после соединения с БД вставить директиву: set set character set cp1251. Вместо cp1251 можно поставить и другую кодировку. Директива set names работает хуже, она устанавливает кодировку не совсем правильно. На нашем хостинге мы поправили php (он не совсем корретно работает с MySQL), и добавили опцию, позволяющую задать кодировку базы данных в php.ini. При наличии этой опции кодировку в скрипте задавать уже не надо, php делает это сам, сразу после соединения с БД. Соответственно у нас корректно работают и старые скрипты, которые не рассчитаны на MySQL 4.1. На нашем форуме все описано подробней: http://forum.openhosting.ru/index.php?t=msg&goto=54
__________________
http://openhosting.ru - Качественный хостинг |
#6
|
|||
|
|||
ну вы даёте, так как при нормальном коде (php/perl) всё делаете в UTF и работает хоть на китайском хостинге 100% отлично, еще не разу не было проблем что расписанно в этой теме.
__________________
Профессиональный вебхостинг и онлайн проекты, на вебсайте. |
#7
|
|||
|
|||
Цитата:
надо вызывать после соеденения. В результате клиенская кодировка = utf8 и если у Вас кодировка базы UTF-8 - начинается перекодирование из UTF-8 в latin1. Оно конечно работает как-то... Но что бы работало нормально нужно либо иметь обе кодировки одинаковые, тоесть latin1, но тогда прощай правильная сортировка и поиск. Либо таки выставить правильную кодировку клиента, тогда все будет правильно перекодироваться. Веселье усугубляется тем что в MySQL кодировка задается сразу в 5-ти переменных. В общем тем кто это все придумывал в MySQL явно погорячились, поэтому сейчас почти везде где поставили MySQL 4.1 и выше - большие проблемы с кодировками. У нас патчь к php скрывает все это, пользователь вообще не замечает этих проблем. В php.ini стоит клиенкая кодировка latin1, а базу можно создавать хоть в cp1251, хоть в UTF-8. Хотя как не странно, некоторые скрипты с базой в UTF-8 умудряются все равно не правильно работать. Например Mambo, если мне память не изменяет. Так что не все так просто, при наличии нашего пача к php все еще проще
__________________
http://openhosting.ru - Качественный хостинг |
#8
|
|||
|
|||
Цитата:
А UTF-8 выбрал так как неохото было создовать подобных проблем с кодировками, так как для каждого языка нужно выдавать другую кодировку, а так всё в UTF-8 закатал пока всё работает нормально. Цитата:
utf8_encode($content); где $content информация из базы, тем самым браузер сам заметит что инфо в utf-8 формате и клиенту подаст инфо в правильной читаемой кодировке. Цитата:
__________________
Профессиональный вебхостинг и онлайн проекты, на вебсайте. |
#9
|
|||
|
|||
в perl работает, потому что он работает с MySQL как рекомендуют разработчики MySQL.
Php не вызывает функцию, которую должен вызывать после соеденения с БД. Эта функция читает файл my.cnf и устанавливает кодировку отуда. Поэтому если у Вас для всего сервера задана кодировка UTF8, в php после соеденения будет utf8. Разумеется кодировку можно поставить руками в php скрипте, только нужно править существующие скрипты.
__________________
http://openhosting.ru - Качественный хостинг |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Компенсации от хостеров | Greeenvich | Форум по Web-хостингу | 12 | 04.04.2012 17:13 |
Нужны 5 хостеров | kimon | Нужен хостинг для проекта! | 17 | 03.05.2008 20:59 |
Пожалуйста, оцените хостеров. | elPoison | Мусор | 4 | 27.01.2004 11:55 |
Оборудование для хостеров | yaroslav | Специальные предложения от провайдеров | 1 | 08.07.2003 22:36 |
Законы хостеров? | ethaniel | Бизнес хостинга | 9 | 12.05.2003 11:26 |