кодировка MySQL

Статус
В этой теме нельзя размещать новые ответы.
1. ты выставил настройки
2. ты создал таблицу выбрав ЦП1251
3. ты импортировал данные
да, ничего не изменилось в плане кодировки. Если зайти в ПхпМойАдмин, открыть новую БД, там в виде таблицы показаны все таблицы, их кодировки и т.п. - дак вот нчиег оне изменилось после проделаных операций

4. в данных у тебя вопросики?
вопросики у меня на форуме. Все русские буквы отображаются "????????? ????" если записать в my.ini строчку "skip-character-set-client-handshake"

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

Добавлено через 1 минуту
сорри show create table ИМЯ_ТАБЛИЦЫ; сделай и сюда на форум запости

какой таблицы? таблиц много.

ну вот например f_themes:

Код:
f_themes	CREATE TABLE `f_themes` (
 `ID_MEMBER` mediumint(...

это все что мне ПхпМойАдмин написал
 
а может ты экспортировал уже просто таблицы в перемешку часть в ЮТФ8 а часть в ЦП1251??

глянь файл дамп скул - встречеются ли там у тебя такие строки c utf8 или cp1251? если да коперни пару строк выше и ниже где такое встречается
 
  • Нравится
Реакции: jred
ага в файле все в перемешку (кодировки) так и есть и почему-то сам файл сдампеный закдирован в УТФ-8...

кусок кода:
Код:
--
-- Структура таблицы `f_ads`
--

CREATE TABLE IF NOT EXISTS `f_ads` (
  `ADS_ID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `NAME` tinytext CHARACTER SET utf8 NOT NULL,
  `CONTENT` text CHARACTER SET utf8 NOT NULL,
  `BOARDS` tinytext CHARACTER SET utf8,
  `POSTS` tinytext CHARACTER SET utf8,
  `CATEGORY` tinytext CHARACTER SET utf8,
  `HITS` mediumint(8) NOT NULL DEFAULT '0',
  `TYPE` smallint(4) NOT NULL DEFAULT '0',
  `show_index` smallint(4) NOT NULL DEFAULT '0',
  `show_board` smallint(4) NOT NULL DEFAULT '0',
  `show_threadindex` smallint(4) NOT NULL DEFAULT '0',
  `show_lastpost` smallint(4) NOT NULL DEFAULT '0',
  `show_thread` smallint(4) NOT NULL DEFAULT '0',
  `show_bottom` smallint(4) NOT NULL DEFAULT '0',
  `show_welcome` smallint(4) NOT NULL DEFAULT '0',
  `show_topofpage` smallint(4) NOT NULL DEFAULT '0',
  `show_towerright` smallint(4) NOT NULL DEFAULT '0',
  `show_towerleft` smallint(4) NOT NULL DEFAULT '0',
  `show_betweencategories` smallint(4) NOT NULL DEFAULT '0',
  `show_underchildren` smallint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ADS_ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

--
-- Дамп данных таблицы `f_ads`
--


-- --------------------------------------------------------

--
-- Структура таблицы `f_ads_settings`
--

CREATE TABLE IF NOT EXISTS `f_ads_settings` (
  `variable` tinytext CHARACTER SET utf8 NOT NULL,
  `value` text CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`variable`(30))
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

--
-- Дамп данных таблицы `f_ads_settings`
--


-- --------------------------------------------------------

--
-- Структура таблицы `f_attachments`
--

CREATE TABLE IF NOT EXISTS `f_attachments` (
  `ID_ATTACH` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ID_THUMB` int(10) unsigned NOT NULL DEFAULT '0',
  `ID_MSG` int(10) unsigned NOT NULL DEFAULT '0',
  `ID_MEMBER` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `attachmentType` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `filename` tinytext NOT NULL,
  `size` int(10) unsigned NOT NULL DEFAULT '0',
  `downloads` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `width` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `height` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `watermarked` tinyint(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID_ATTACH`),
  UNIQUE KEY `ID_MEMBER` (`ID_MEMBER`,`ID_ATTACH`),
  KEY `ID_MSG` (`ID_MSG`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=103 ;

PS:
1. а можно ли настроить ВСЕ параметры в МуСКЛ на ср1251, чтобы он всегда только с такими параметрами и работал, чтобы при любых конвертациях, дампах, импортах всегду мутился ср1251?

2. и можно ли не импортируя/экспортируя БД каким-либо запросом изменить кодировки всех таблиц на ср1251?

3. и почему у меня форум не понимает кодировку ср1251 (с ней отображаются "?????? ????"), ведь он изначально устанавливался под ср1251...

4. Почему при переустановки форума выпадает ошибка, подобная "C5/G6/H2..."? это из-за того что конект к МуСКЛ идет по ср1251, а кодировка МуСКЛ утф-8? как кодировку мускула сделать утф-8, чтобы и в пхпМойАдмин писалось тчо у МуСКЛ кодировка ср1251?
 
1. ну в теории мы выставили это но видишь - теже скрипты твои не хотят работать правильно, когда стоит skip-character-set-client-handshake это для них запрет на смену кодировки. а когда запрет стоит у тебя вопросики, значит они меняют сами. может гдето в софте стоит дефолтовая кодировка в файлах - а может они видят в какой кодировке таблицы и пытаются на нее переключить соединение. кстати у тебя счас при show variables like '%char%' должен быть только один utf8 у системы.
2. можно вначале для ДБ
ALTER DATABASE `ИМЯ_БАЗЫ_ДАННЫХ` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;

и потом для каждой таблички таблицы:
ALTER TABLE `ИМЯ_ТАБЛИЦЫ` CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;

только комманды лучше запускай из консоли mysql не из ПХП МАЙАДМИНА регинирация может занять больше 30 секунд если больше таблицы у тебя есть и короче есле в кратце то можно повердить таблицы.
3. и почему у меня форум не понимает кодировку ср1251 (с ней отображаются "?????? ????"), ведь он изначально устанавливался под ср1251... - скорее всего счас эти таблицы в ЮТФ или сам форум переключился в ЮТФ както так
4. как кодировку мускула сделать утф-8, чтобы и в пхпМойАдмин писалось тчо у МуСКЛ кодировка ср1251? не понял? как так?))
но опять же - пхпмайадмин скорее всего пишет системную кодировку тебе - ее менять нельзя. это кодировка твоей ОС. она останется вобщем в первом пункте я про это писал.

второй вариант экспортировать БД с параметром кодировки:
mysqldump --user=username --password=password --default-character-set=ср1251 dbname > dump.sql

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

пробуй вобщем ) тока бакапы сделай чтобы не похерить свой форум.
 
  • Нравится
Реакции: jred
вопсчем посидя в гугле я тут почитал немножко и в ПхпМойАдмине выствил еще пару параметров разрешающие мне экспортировать в cp1251, НО почему-то при таком экспорте теряются все русские символы!

Есть БД, она в ср1251 и все таблицы и т.п. в ней в ср1251 - проверял! дак вот когда я экспортирую в ср1251 все русские буквы просто убираются, т.е. было громадное поле с текстом, а теперь просто '' в чем может быть проблема?

и да, в show variables like '%char%' только один утф и один бинари, остальные ср1251...

Добавлено через 4 минуты
и еще вопрос: почему, когда я просматриваю любое поле, заполненое русским текстом в ср1251 из хпМойАдмин у меня показываются ������ �������
 
Добавлено через 4 минуты
и еще вопрос: почему, когда я просматриваю любое поле, заполненое русским текстом в ср1251 из хпМойАдмин у меня показываются ������ �������
это означает что эти данные в таблице у тебя хранятся в формате ЮТФ8 (или в бинари?) набери для этой таблицы где вот такие левые данные

SHOW CREATE TABLE `ИМЯ_ТАБЛИЦЫ`

только скопируюй весь текст что он выдаст там со всеми кодировками и тд. и станет точно ясно. в прошлый раз ты не все копернул

Добавлено через 1 минуту
Есть БД, она в ср1251 и все таблицы и т.п. в ней в ср1251 - проверял! дак вот когда я экспортирую в ср1251 все русские буквы просто убираются, т.е. было громадное поле с текстом, а теперь просто '' в чем может быть проблема?
а как ты экспортируешь? нада экспортировать как я говорил:
mysqldump --user=username --password=password --default-character-set=ср1251 dbname > dump.sql
 
  • Нравится
Реакции: jred
это означает что эти данные в таблице у тебя хранятся в формате ЮТФ8 (или в бинари?) набери для этой таблицы где вот такие левые данные

SHOW CREATE TABLE `ИМЯ_ТАБЛИЦЫ`

только скопируюй весь текст что он выдаст там со всеми кодировками и тд. и станет точно ясно. в прошлый раз ты не все копернул

я в прошлый раз копернул все что выдал мне ПхпМойАдмин на такой запрос. (все понял, надо было нажать "развернутое отображение данных")
вот:
Код:
d_comments	CREATE TABLE `d_comments` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `post_id` int(11) NOT NULL DEFAULT '0',
 `user_id` mediumint(8) NOT NULL DEFAULT '0',
 `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `autor` varchar(40) NOT NULL DEFAULT '',
 `email` varchar(40) NOT NULL DEFAULT '',
 `text` text NOT NULL,
 `ip` varchar(16) NOT NULL DEFAULT '',
 `is_register` tinyint(1) NOT NULL DEFAULT '0',
 `approve` tinyint(1) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`),
 KEY `user_id` (`user_id`),
 FULLTEXT KEY `text` (`text`)
) ENGINE=MyISAM AUTO_INCREMENT=164 DEFAULT CHARSET=cp1251

Добавлено через 1 минуту

а как ты экспортируешь? нада экспортировать как я говорил:
mysqldump --user=username --password=password --default-character-set=ср1251 dbname > dump.sql

и куда это вводить? в скл запрос? (у меня не линукс)
я экспортировал через ПхпМойАдмин. (впрочем как и импортировал)

PS: у меня почему-то все русские буквы в таблицах с утф-8 из ПхпМойАдмина отображаются "??????? ?????", а на форуме нормальными русскими буквами что делать? я закоментировал в my.ini все поля с кодировкой, но на show variables like '%char%' все равно выдает клиента и конект как ср1251, думаю из-за этого, но исправить не могу! а надо ли?

Код:
character_set_client	cp1251
character_set_connection	cp1251
character_set_database	latin1
character_set_filesystem	binary
character_set_results	cp1251
character_set_server	latin1
character_set_system	utf8
character_sets_dir	F:\WebServer\MySQL\share\charsets\

Добавлено через 3 минуты
зы: дай аську плиз, если есть, запарило через форум сутками общаться ))))))))))
 
в общем в итоге оказалось что конвертнуть не удавалось из за налаичия в одной БД двух кодировок. ЮТФ8 и CP1251, при экспорте из БД одного файла в нем оказывались русские символы сразу в двух кодировках, что не приемлемо - из за этого не удавалось обратно импортировать БД в базу без потерь одной из кодировок.

поэтому если кто столкнётся с таким, то таблицы при экспорте нужно группировать не по БД, а по кодировкам.
 
  • Нравится
Реакции: jred
а где же искать данные пункты? при запуске денвера и mysql нигде их не вижу..

они есть только если отдельно mysql был поставлен..а через денвер их просто нет
 
а где же искать данные пункты? при запуске денвера и mysql нигде их не вижу..

они есть только если отдельно mysql был поставлен..а через денвер их просто нет

откройте \usr\local\mysql\my.cnf :

[client]
port = 3306
socket = /tmp/mysql5.sock
default-character-set = cp1251
character-sets-dir = /usr/local/mysql5/share/charsets



[mysqld]
# Кодировка баз данных по умолчанию.
default-character-set = cp1251
init-connect = "set names cp1251"
skip-character-set-client-handshake
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху