Взял в аренду сервак. Все было хорошо, радовался жизни. Пока дело не дошло до БД. Дело в том что по умолчанию бала установлена латинская кодировка (причем шведская), и когда ктото из пользователей публиковал на своем сайте новость она превращалась в ??????????? ??? ?????????????????????????. Изменил файл /etc/my.cnf , стало:
[client]
default-character-set=cp1251
[mysqld_safe]
default-character-set=cp1251
[mysqld]
set-variable = max_connections=500
safe-show-database
default-character-set=cp1251
[mysql]
default-character-set=cp1251
Потом зашел в БД и поставил БД кодировку win1251 и все таблицам и полям поставил туже кодировку. Но вот проблема. На экран всеравно выводятся ?????????????? ??????????????? ??????????????? , а при попытки создать новый топик в phpbb выдается ошибка:
SQL Error : 1270 Illegal mix of collations (cp1251_bin,IMPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
INSERT INTO pbb_search_wordmatch (post_id, word_id, title_match) SELECT 7, word_id, 0 FROM pbb_search_wordlist WHERE word_text IN ('Текст', 'темы')
Что делать? (после проделанных изменений я не забыл перезапустить MySQL)
Re: Кодировки в MySQL
Как я понял, ситуация такая:
Сервер - cp1251
Таблицы - latin1
Попробуй после mysql_connect выполнить запрос типа:
mysql_query('SET NAMES latin1');
Если что, поиграй в этом запросе с кодировками.
Re: Кодировки в MySQL
Но я же не могу всем пользователям говорить - юзайте вот эту команду. многие из них очень не далекие вв кодинге люди.
Re: Кодировки в MySQL
Тогда нужно было сразу все протестировать и найти нужную кодировку. Теперь - индивидуальный подход.
Самостоятельно нужно это прописать, там где нужно. Изначально только проверить, что бы решало этот вопрос.
Re: Кодировки в MySQL
Проблему можно решить двумя способами
1.
Переводить всё по колонкам где у тебя русские буквы в Юникод
ALTER TABLE имя_таблици MODIFY имя_поля BINARY(100);
Помни если размер поля char 50 то BINARY(100)!!!
Затем можно использовать юникод, будет выдавать все гуд при запросах. Но если тебя не устраивает юникод тогда даль ше все колонки переводи в win кодировку.
ALTER TABLE имя_таблици MODIFY имя_поля CHARACTER SET cp1251;
2.
Если есть возможность то пересоздай БД с кодировкой cp1251
CREATE DATABASE db_name DEFAULT CHARSET=cp1251