Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Нарушилась кодировка (drug) 10/01/2010 - 06:46:47
      Re: Нарушилась кодировка (drug) 10/01/2010 - 06:47:20
      Re: Нарушилась кодировка (drug) 13/01/2010 - 11:34:53

> Original message text:
> From: drug - 10/01/2010 - 06:46:47
> Subject:Нарушилась кодировка
> -----------------
> есть БД:
> запрос show variable; показывает:
>
> character_set_client = utf8
> character_set_connection = utf8
> character_set_database = utf8
> character_set_filesystem = binary
> character_set_results = utf8
> character_set_server = utf8
> character_set_system = utf8
> collation_connection = utf8_general_ci
> collation_database = utf8_general_ci
> collation_server = utf8_general_ci
>
> делал в putty (SSH)...
> *************************************
> ПЕРВЫЙ ВАРИАНТ:
> когда выполняю запрос в php (сам php файл в UTF-8):
>
> mysql_query("INSERT INTO `database`.`table` (`text`) VALUES ('Привет');");
>
> в БД записывается это: пÑ?ивет < смотрю через phpMyAdmin.
> на странице (сам файл страницы в UTF-8 так же установлен content="text/html; charset=utf-8") вывожу это, вижу нормальный русский текст, тобишь "Привет".
>
>
> ВТОРОЙ ВАРИАНТ:
> делаю "насильно" после соединения с БД:
> mysql_query("SET names 'utf8' COLLATE 'utf8_general_ci'");
> и выполняю тот же выше приведенный запрос:
> mysql_query("INSERT INTO `database`.`table` (`text`) VALUES ('Привет');");
>
> в БД записывается слово "Привет" < смотрю через phpMyAdmin. вывожу это на страницу, вижу нормальный русский текст... в то время как то что я записывал ранее выводится уже как пÑ?ивет
>
> *************************************
> объясните мне пожалуйста почему так происходит при ПЕРВОМ ВАРИАНТЕ?
> как перекодировать БД если туда всё записано по ПЕРВОМУ ВАРИАНТУ - вернее, объясните сам алгоритм, что на что кодировать?
> есть альтернатива перекодированию?
>
> PS. модуль php:
> iconv - есть;
> php-mbstring - нету, возможности установить - нету;
>
> - для чего это? ответ: по первому варианту в БД с установленной utf8_general_ci поиск русских символов регистроЗАВИСИМ, когда по ВТОРОМУ ВАРИАНТУ поиск регистроНЕзависим.
>
> огромное спасибо за ранее!!!
>


From: drug - 13/01/2010 - 11:34:53
Subject:Нарушилась кодировка
-----------------
проблема решена!

оказывается по умолчанию кодировка соединения и т.д.и т.п. была:
...
| character_set_client | latin1
| character_set_connection | latin1
| character_set_database | utf8
| character_set_filesystem | binary
| character_set_results | latin1
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | /usr/share/mysql/charsets/
| collation_connection | latin1_swedish_ci
| collation_database | utf8_general_ci
| collation_server | latin1_swedish_ci
...
по этому сами данные были в utf8, а метаданные таблички говорили, что она в
latin1, и соединение в latin1. короче, всё экспортировал так:
ssh:~ # mysqldump --default-character-set=latin1 -u root -p -h localhost -B database | sed 's/latin1/utf8/' > /home/ssh/dump.sql
теперь русский текст отображаться нормально, далее залил в бд этот бекап и вуууоля


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36639



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |