Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MySQL и кодировка. Опять ваш сраный UTF.

369
13 марта 2011 года
Kesano
451 / / 09.10.2007
Салют, коллеги.
Предыстория: Решил из своего Asus eeePC 900 сделать серверок, т.к. на большее он уже не годится. Поставил FreeBSD, Апач, PHP, расширения для PHP...
Но сложнее всего дался MySQL... не знаю почему...

Собственно вопрос в следующем:
Таблицы в win1251 выглядят прекрасно и проблем не вызывают...
Пока мы не переходим к UTF-8... пришлось побороться, чтобы заставить ИСКАТЬ по Мускулю в UTF-8... И проблема с выводом... что делать?
Если в my.cnf ставить по умолчанию коннекта к базе default_character_set, character-set-server=cp1251; init-connect="SET NAMES cp1251" то при работе с вин1251 всё супер... с УТФ лажа... если наоборот - то с утф всё хорошо, а с 1251 - местами лажа (при выборке с БД возвращает ?????????)...

В общем, подскажите, у кого как сервер настроен, чтобы с кодироваками всё было гуд? Ну и в ПхпМайАдмине всё было красиво (UTF-8 у меня строго кракозяблами идет, в любых вариантах).

P.S. Это я всё пытаюсь по вашим рекоммендациям, друзья, перейти с устаревшего вин1251 к УТФ
4
13 марта 2011 года
mike
3.7K / / 01.10.2002
 
Код:
SET NAMES utf8;
SET CHARACTER SET utf8;
SET SESSION collation_connection = 'utf8_general_ci';


После подключения три этих запросе решают все проблемы с кодировками. Не надо привязываться к настройкам MySql сервера. Устанете настраивать при переносах.
244
14 марта 2011 года
UAS
2.0K / / 19.07.2006
Тем более проще, заодно, всю базу сразу сконвертировать из 1251 в утф8.
369
14 марта 2011 года
Kesano
451 / / 09.10.2007
Цитата: mike
 
Код:
SET NAMES utf8;
SET CHARACTER SET utf8;
SET SESSION collation_connection = 'utf8_general_ci';


После подключения три этих запросе решают все проблемы с кодировками. Не надо привязываться к настройкам MySql сервера. Устанете настраивать при переносах.



Т.е. непосредственно в PHP-коде после mysql_connect отправить соответствующие запросы к базе?

Цитата: UAS
Тем более проще, заодно, всю базу сразу сконвертировать из 1251 в утф8.



Хорошо, как осуществлять поиск в БД?
При всех раскладах, если я в php-файле задаю $city="Город", всё равно он в базе ничего не находит. Хотя файл сохранен в UTF.

244
14 марта 2011 года
UAS
2.0K / / 19.07.2006
Ну по идее, если SET NAMES и прочие некорректно установлены - то и ничего не найдет, т.к. кодировки того что ищут и где - не совпадают. У меня прекрасно поиск всегда работает на UTF.
369
16 марта 2011 года
Kesano
451 / / 09.10.2007
Окей... Как избавиться от траблы?
Как заставить красиво искать?

1. Исходный текст (в PHP коде)
2. Соединение, SET NAMES ...
3. БАЗА, сравнение таблиц...

Как сделать так, чтобы всё корректно работало при вариациях кодировки? Допустим, файл ANSI (win1251), SET NAMES= UFT-8, таблица UTF-8... Нам нужно чтобы кодировки совпали в соединении и таблице? Или в передаваемых данных и соединении? или во всех трёх местах?
244
16 марта 2011 года
UAS
2.0K / / 19.07.2006
Так, я точно уже не помню что там и как, т.к. давно не занимался вебом, но если Вы делаете SET NAMES 'k', то это указывает на:
1) Если данные отправляются к SQL-серверу, то он воспринимает их в кодировке k.
2) Если данные принимаются от SQL-сервера, то он их отправляет в кодировке k, независимо от кодировки данных в хранящей их таблице..
70K
23 марта 2011 года
mark2011
3 / / 23.03.2011
Kesano
У вас должно быть ВСЁ в utf-8. Файл с кодом тоже должен быть сохранён в этой кодировке, это обязательно. Далее должны быть в этой кодировке файлы-скрипты базы данных (если вы импортируете скрипт в phpMyAdmin). И, наконец, в этом самом скрипте для каждого текстового поля должно быть указано

 
Код:
character set utf8


а после таблицы:
 
Код:
character set=utf8 collate=utf8_general_ci


Тогда на 100% всё заработает как надо. У вас поиск не работает потому что одно из условий не выполняется.
13
23 марта 2011 года
RussianSpy
3.0K / / 04.07.2006
Топикстартеру уже ответили задолго до вашего появления
70K
25 марта 2011 года
Hosting obzor
1 / / 25.03.2011
спасибо и мне помогло
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог