Кодировки в MySQL

Аватар пользователя xbit777

Взял в аренду сервак. Все было хорошо, радовался жизни. Пока дело не дошло до БД. Дело в том что по умолчанию бала установлена латинская кодировка (причем шведская), и когда ктото из пользователей публиковал на своем сайте новость она превращалась в ??????????? ??? ?????????????????????????. Изменил файл /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)

Аватар пользователя WebCode

Re: Кодировки в MySQL

Как я понял, ситуация такая:
Сервер - cp1251
Таблицы - latin1

Попробуй после mysql_connect выполнить запрос типа:
mysql_query('SET NAMES latin1');

Если что, поиграй в этом запросе с кодировками.

Аватар пользователя xbit777

Re: Кодировки в MySQL

Но я же не могу всем пользователям говорить - юзайте вот эту команду. многие из них очень не далекие вв кодинге люди.

Аватар пользователя WebCode

Re: Кодировки в MySQL

Тогда нужно было сразу все протестировать и найти нужную кодировку. Теперь - индивидуальный подход.

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

Аватар пользователя sem

Re: Кодировки в MySQL

Цитата:
xbit777 пишет:
Но я же не могу всем пользователям говорить - юзайте вот эту команду. многие из них очень не далекие вв кодинге люди.

Проблему можно решить двумя способами
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

RSS-материал