кодировка MySQL

Статус
В этой теме нельзя размещать новые ответы.

jred

Профессор
Регистрация
16 Сен 2008
Сообщения
383
Реакции
40
меня интерисует вот что:

когда я устанавливал Мускул я выбирал ср1251, а когда захожу в ПхпМойАдмин там пишется "MySQL-кодировка: UTF-8 Unicode (utf8)". Почему? как это исправить? и надо ли вообще исправлять?


я использую форум SimpleMachines Forum, дак когда востанавливал БД из дампа выбирал ср1251, а большинство таблиц в БД почему-то все-равно utf8_general_ci ... В чем проблема? как это исправить? и надо ли исправлять? из этого следует, что у меня теперь форум не на кодировке ср1251, а на кодировке утф-8?

когда я устанавливал модуль на форуме он создал таблицы, которые были в кодировке cp1251_general_ci, дак вот при заполнении этих таблиц русскими буквами (это когда я в админке в модуле поля заполнял и жал сохранить, шел запрос в Мускул) выдавалась ошибка, что-то типа "C5/X7/S3/..." и т.п. и нифига не заполянлось. Я полез в ПхпМойАдмин, вручную заполнил поля русскими буквами и в настройках модуля русские буквы показывались "????? ???" и полез в ПхпМойАдмин и исправил кодировку таблицы на утф8-генерал-ци и теперь и запросы с рускими буквами проходят и читаются нормально! Но почему? ведь форум изначально кодировался как ср1251!!

но мне типо надо чтоб форум был в кодировке ср1251, т.к. сайт на ДЛЕ в кодировке ср1251 - типо одинаковые кодировки мне везде надо :((((


вот...
 
укажи в пхпмайдмин этот запрос:
show variables like '%char%';

и коперни результаты в форум
 
  • Нравится
Реакции: jred
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir F:\WebServer\MySQL\share\charsets\
 
часть таблиц CP1251 а часть UTF8 скорее всего потому что у тебя при создании таблиц при их импорте в CREATE стэйтментах ЯВНО для каждой таблицы не указана кодировка. отсюа и разные у таблиц кодировки, когда указано явно пишется CP1251 когда не явно дефолтовая т.е. UTF8.

ты можешь выставить CP1251 дефолтовую, удалить таблицы и добавить заново. и тогда у тебя будет все в CP1251. русский текст в mysql в формате UTF8 занимает ровно в два раза больше места, так как для хранения символа используется два байта. следовательно если ты перейдешь на UTF8 то все таблицы, точнее вся база целиком будет занимать больше места примерно в два раза. если сервер не очень мощный а база большая то это скажется на скорости работы базы данных.

плюсу использования UTF8 что если кто напишет ЛЮБЫЕ символы допустим на китайском языке, или корейском или там на немецком УМЛАУТЫ разные и прочие - то эти символы не похерятся, не станут вопросиками. если тебе это **х не нада меняй все как было.
 
  • Нравится
Реакции: jred
а как мне указать/поменять чтобы Мускул все под ср1251 в будущем делал? как дефолт на ср1251 сменить?

мне УТф-8 вообще нафиг не надо :)
 
найди файл my.cnf или my.ini зависит от того какая ОСЬ, линукс или внидовс - открой его и найди там такой блок - [mysqld] и сразу под ним вставь вот эти строки:

character-set-server = ср1251 # это может уже есть у тебя в этом файле глянь внимательно
default-character-set = ср1251
skip-character-set-client-handshake

после этого перезагрузи mysql сервер и попробуй реимпортировать те таблицы что ты уже импортнул и глянь кодировку. изменилось ли что
 
  • Нравится
Реакции: jred
найди файл my.cnf или my.ini зависит от того какая ОСЬ, линукс или внидовс - открой его и найди там такой блок - [mysqld] и сразу под ним вставь вот эти строки:



после этого перезагрузи mysql сервер и попробуй реимпортировать те таблицы что ты уже импортнул и глянь кодировку. изменилось ли что

вообще ничего не изменилось

Добавлено через 7 минут
меня только что чуть инфаркт не хватил, когда я зашел на форум а там все в ????????????????
удалил строку "skip-character-set-client-handshake" - все стало нормальным...
 
а ты реимпортировал таблицы? после тогог как сменил настройки? т.е. старые все удалил? и заново все добавил из sql файла?
 
  • Нравится
Реакции: jred
а ты реимпортировал таблицы? после тогог как сменил настройки? т.е. старые все удалил? и заново все добавил из sql файла?

да, только старые не удалял, создал новую таблицу и туда импорт сделал из сикуля, да еще и кодировку ср1251 выбирал.
потом открыл БД и посмотрел кодировки таблиц.
 
1. ты выставил настройки
2. ты создал таблицу выбрав ЦП1251
3. ты импортировал данные
4. в данных у тебя вопросики?

сделай explain ИМЯ_ТАБЛИЦЫ; с которой ты это проделал в пхпмайдмине и коперни сюда данные

Добавлено через 1 минуту
сорри show create table ИМЯ_ТАБЛИЦЫ; сделай и сюда на форум запости
 
  • Нравится
Реакции: jred
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху