Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с ajax'ом
 
 автор: neadekvat   (07.08.2009 в 14:25)   письмо автору
 
 

Скачал скрипт http://www.dhtmlgoodies.com/index.html?whichScript=ajax-dynamic-list
Работает, но только на английском. Пробовал добавить в бд русские названия - перестает скрипт работать.
Возможно, что и с кодировкой что-то (с аяксом пока не знаком, но он ведь только с UTF-8 работает?)
Может, кто сталкивался с этим и знает, как подточить для русских названий.

  Ответить  
 
 автор: Sergeich   (07.08.2009 в 14:31)   письмо автору
 
   для: neadekvat   (07.08.2009 в 14:25)
 

Сделать везде кодировку utf-8.

  Ответить  
 
 автор: neadekvat   (07.08.2009 в 14:37)   письмо автору
 
   для: Sergeich   (07.08.2009 в 14:31)
 

Таки пробовал.
А может, плохо пробовал..
В бд ведь тоже надо менять на ut8_general_ci ?

  Ответить  
 
 автор: neadekvat   (07.08.2009 в 14:48)   письмо автору
 
   для: neadekvat   (07.08.2009 в 14:37)
 

Так, по новой создал бд, установил DEFAULT CHARSET=utf8
Теперь русские буквы вообще не распознаются.

  Ответить  
 
 автор: Sergeich   (07.08.2009 в 14:54)   письмо автору
 
   для: neadekvat   (07.08.2009 в 14:48)
 

А саму страницу Вы в какой кодировке сохраняете?

  Ответить  
 
 автор: neadekvat   (07.08.2009 в 14:58)   письмо автору
 
   для: Sergeich   (07.08.2009 в 14:54)
 

UTF-8
А из базы то мне в windows-1251 все равно приходит о.О

  Ответить  
 
 автор: Sergeich   (07.08.2009 в 15:25)   письмо автору
 
   для: neadekvat   (07.08.2009 в 14:58)
 

А попробуйте вообще кодировку на базу данных не устанавливать. Пусть сервер базы данных установит ее по умолчанию.

  Ответить  
 
 автор: neadekvat   (07.08.2009 в 17:07)   письмо автору
 
   для: Sergeich   (07.08.2009 в 15:25)
 

Он по дефолту поставил это: "CHARSET=cp1251"

В самом коде была такая строка

<?
$letters 
preg_replace("/[^a-z0-9 ]/i","",$letters);
?>

соответственно все русские буквы она резала.
Я ее исправил на эту

<?
$letters 
preg_replace("/[^а-яa-z0-9 ]/i","",$letters);
?>

Теперь "Россия" появляется единственной в списке, но появляется странным образом. На й, на ц, на в, на Р не появляется и тд.

  Ответить  
 
 автор: Николай2357   (08.08.2009 в 22:29)   письмо автору
 
   для: neadekvat   (07.08.2009 в 17:07)
 

<? 
$letters 
preg_replace("/[^а-яёa-z0-9 ]/iu","",$letters);

  Ответить  
 
 автор: neadekvat   (08.08.2009 в 23:36)   письмо автору
 
   для: Николай2357   (08.08.2009 в 22:29)
 

А что значит u?
И где-то я видел, что й тоже надо вносить дополнительно.

Ну да это вопросы для себя, код от этого рабочим не стал.

  Ответить  
 
 автор: Николай2357   (09.08.2009 в 08:40)   письмо автору
 
   для: neadekvat   (08.08.2009 в 23:36)
 

>А что значит u?
Это модификатор для юникода

>И где-то я видел, что й тоже надо вносить дополнительно.
Не надо.

>Ну да это вопросы для себя, код от этого рабочим не стал.
Какой именно? И вообще интересно, для чего эта конструкция, почему нужно убивать знаки препинания допустим. Мне вот без них очень неуютно.

А для решения проблемы надо выставить кодировку соединения. Делается это так:
<?
    mysql_query
('SET NAMES utf8');        
    
mysql_query('SET CHARACTER SET utf8');
    
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');

  Ответить  
 
 автор: neadekvat   (09.08.2009 в 13:38)   письмо автору
 
   для: Николай2357   (09.08.2009 в 08:40)
 

Если использовать
$letters = preg_replace("/[^а-яёa-z0-9 ]/iu","",$letters);

То скрипт не работает даже с английскими названиями.
Если убрать u в конце, то на русские буквы никак не реагирует, открывает весь список. Судя по всему, запрос в бд идет с LIKE '%' а не LIKE 'введенные_символы%'
То есть русские символы срезаются..где-то.
Уже везде установил utf8

  Ответить  
 
 автор: Николай2357   (09.08.2009 в 15:01)   письмо автору
 
   для: neadekvat   (09.08.2009 в 13:38)
 

>Если использовать...

>То скрипт не работает даже с английскими названиями.

Я вообще не понимаю где и зачем это использунтся. И уж тем более ничего про LIKE не упоминалось.
Вот я и спрашиваю еще раз, что именно не работает то? Эта строчка работает точно.

  Ответить  
 
 автор: neadekvat   (09.08.2009 в 16:42)   письмо автору
 
   для: Николай2357   (09.08.2009 в 15:01)
 

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

  Ответить  
 
 автор: Trianon   (09.08.2009 в 00:49)   письмо автору
 
   для: Sergeich   (07.08.2009 в 15:25)
 

>А попробуйте вообще кодировку на базу данных не устанавливать. Пусть сервер базы данных установит ее по умолчанию.

и как в танке.

  Ответить  
 
 автор: neadekvat   (09.08.2009 в 13:30)   письмо автору
 
   для: Trianon   (09.08.2009 в 00:49)
 

Я ответил:
"Он по дефолту поставил это: "CHARSET=cp1251""
Он - это должна быть она - база данных..с местоимениями проблема, но смысл понятен.

  Ответить  
 
 автор: Trianon   (09.08.2009 в 14:27)   письмо автору
 
   для: neadekvat   (09.08.2009 в 13:30)
 

база данных сама по себе ничего не ставит.
Сервер, насколько я знаю, тоже делает это в крайне редком случае (INIT-CONNECT)

  Ответить  
 
 автор: neadekvat   (09.08.2009 в 14:42)   письмо автору
 
   для: Trianon   (09.08.2009 в 14:27)
 

Создавая базу, я не указал кодировку. Затем нажал "экспорт", и там было то, что я писал выше.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования