11.12.2009, 21:00 | #1 |
Специалист
|
Вопросики
Сразу скажу - название темы как-раз подходит под тему проблемы.)
Вообщем сегодня загрузил сайт на хост, но после заливки базы (с помощью dunver'а) на сайте вместо слов появились вопросительные знаки (??????????????? ?? ???). Менял кодировку на хосте, но ситуация не изменилась. Обращаюсь к бывалым ВебМастерам САПЫ: "Что возможно сделать в данной ситуации?" С Уважением. |
11.12.2009, 21:15 | #3 |
Специалист
|
|
11.12.2009, 21:23 | #4 |
Специалист
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 183
|
Дело в том, что Денвер по умолчанию использует win-1251 кодировку в базах данных и в настройках локального Апача (атавизм, но что поделать). А большинство современных linux/*bsd-серверов уже выдают заголовок о UTF-8.
Самый простой вариант попробовать - в начале скрипта дописать PHP код:
Так что идете в phpmyadmin (http://localhost/tools/), там заходите в нужную базу данных, в Operations (операции), меняете Collation у каждой таблицы на "utf8_general_ci". Затем идете в таблицы (в структуру) и у каждого столбца "карандашиком" меняете collation опять же на "utf8_general_ci". После этого уже делать дамп и загружать на сервер. Последний шаг - в скриптах доступа к базе данных после соединения, но перед первым запросом делаете: PHP код:
PHP код:
А ну и (хотя уже должно все работать нормально) в заголовках на всякий пожарный выдаем UTF-8 - в самом начале PHP скриптов перед выводом дадим: PHP код:
Последний раз редактировалось Yappie; 11.12.2009 в 21:31. |
11.12.2009, 21:34 | #6 |
Специалист
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 183
|
И чтобы в дальнейшем не мучится в локальный денвер лучше прописать, в
В z:\usr\local\apache\conf\httpd.conf найти AddDefaultCharset и заменить ее на: Код:
AddDefaultCharset utf-8 в раздел [client] такое: Код:
[client] port = 3306 socket = /tmp/mysql5.sock default-character-set = utf8 character-sets-dir = /usr/local/mysql5/share/charsets Нет, в Ваш скрипт, выводящий сайт. И опять же туда же можно попробовать дописать (кроме header, после подключения к БД). Код:
@mysql_query ("set character_set_client='cp1251'"); @mysql_query ("set character_set_results='cp1251'"); @mysql_query ("set collation_connection='cp1251_general_ci'"); Последний раз редактировалось Yappie; 11.12.2009 в 21:37. Причина: Добавлено сообщение |
11.12.2009, 21:52 | #7 | |
Специалист
|
Цитата:
|
|
11.12.2009, 21:56 | #8 | |
Специалист
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 183
|
Цитата:
Хотя во - может есть дампером способ и проще: http://forum.typo3.biz/showthread.php?t=5720 Код HTML:
1. Бякап дампером (строка define('CHARSET', 'auto'); справляется прекрасно) 2. пишем строку define('RESTORE_CHARSET', 'forced->utf8'); 3. прямо в этом же окне, где выполняли только что бякап, разворачиваем базу обратно Только в вашем случае: 1. делаем на локальном компе, РЕДАКТИРУЕМ ДАМПЕР, загружаем на сервер модифицированный дампер, как написано в 2., восстанавливаем ТАМ дамп (отредактированным дампером). Последний раз редактировалось Yappie; 11.12.2009 в 22:02. |
|
12.12.2009, 14:38 | #9 | |
Специалист
|
Цитата:
Теперь вообще буквы изчезли. ПС: создавать бэкап на локалке неизменёным дампером? Добавлено через 50 минут Странно как-то. Проделал обычные действия на локалке - перенёс базу - всё работает как часы. Но как только пытаюсь сделать что-то с хостом - вопросы. Добавлено через 15 часов 25 минут Спасибо, Yappie, за советы. Проблема решилась после написания в службу поддержки хоста. Последний раз редактировалось BaS1S; 12.12.2009 в 14:38. Причина: Добавлено сообщение |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросики | IMHO | Вопросы по работе системы | 3 | 02.07.2007 16:52 |
Часовой пояс GMT +3, время: 16:54.