Старый 11.12.2009, 21:00   #1
Специалист
 
Аватар для BaS1S
 
Регистрация: 08.06.2009
Адрес: РФ
Сообщений: 142
Вес репутации: 185
BaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личность
Отправить сообщение для BaS1S с помощью ICQ
По умолчанию Вопросики

Сразу скажу - название темы как-раз подходит под тему проблемы.)
Вообщем сегодня загрузил сайт на хост, но после заливки базы (с помощью dunver'а) на сайте вместо слов появились вопросительные знаки (??????????????? ?? ???). Менял кодировку на хосте, но ситуация не изменилась. Обращаюсь к бывалым ВебМастерам САПЫ: "Что возможно сделать в данной ситуации?"
С Уважением.
BaS1S вне форума   Ответить с цитированием
Старый 11.12.2009, 21:10   #2
Администратор
 
Регистрация: 22.11.2006
Сообщений: 5,868
Вес репутации: 21475165
Avelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспоримаAvelon - репутация неоспорима
По умолчанию

после каждого изменения надо удалять links.db чтобы он перезакачался
Avelon вне форума   Ответить с цитированием
Старый 11.12.2009, 21:15   #3
Специалист
 
Аватар для BaS1S
 
Регистрация: 08.06.2009
Адрес: РФ
Сообщений: 142
Вес репутации: 185
BaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личность
Отправить сообщение для BaS1S с помощью ICQ
По умолчанию

Цитата:
Сообщение от Avelon Посмотреть сообщение
после каждого изменения надо удалять links.db чтобы он перезакачался
А где он лежит не подскажите? А то на ум всплывает только один линкс - папка кода сапы...Вот только сапа ещё не установлена и на кодировку это никак не влияет.
BaS1S вне форума   Ответить с цитированием
Старый 11.12.2009, 21:23   #4
Специалист
 
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 182
Yappie - как роза среди колючекYappie - как роза среди колючекYappie - как роза среди колючек
По умолчанию

Дело в том, что Денвер по умолчанию использует win-1251 кодировку в базах данных и в настройках локального Апача (атавизм, но что поделать). А большинство современных linux/*bsd-серверов уже выдают заголовок о UTF-8.

Самый простой вариант попробовать - в начале скрипта дописать

PHP код:
<? header('Content-type: text/html; charset=windows-1251'?>
Если не поможет - убираем эту строку и переводим все в UTF-8.

Так что идете в phpmyadmin (http://localhost/tools/), там заходите в нужную базу данных, в Operations (операции), меняете Collation у каждой таблицы на "utf8_general_ci". Затем идете в таблицы (в структуру) и у каждого столбца "карандашиком" меняете collation опять же на "utf8_general_ci".

После этого уже делать дамп и загружать на сервер.

Последний шаг - в скриптах доступа к базе данных после соединения, но перед первым запросом делаете:

PHP код:
@mysql_query ("set character_set_client='utf8'");
@
mysql_query ("set character_set_results='utf8'"); 
@
mysql_query ("set collation_connection='utf8_general_ci'"); 
может сработать и только одна строка (вместо этих трех)

PHP код:
@mysql_query ("set names utf8"); 
но не всегда почему-то в PHP она адекватно воспринимается.

А ну и (хотя уже должно все работать нормально) в заголовках на всякий пожарный выдаем UTF-8 - в самом начале PHP скриптов перед выводом дадим:

PHP код:
<? header('Content-type: text/html; charset=UTF-8'?>

Последний раз редактировалось Yappie; 11.12.2009 в 21:31.
Yappie вне форума   Ответить с цитированием
Старый 11.12.2009, 21:32   #5
Специалист
 
Аватар для BaS1S
 
Регистрация: 08.06.2009
Адрес: РФ
Сообщений: 142
Вес репутации: 185
BaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личность
Отправить сообщение для BaS1S с помощью ICQ
По умолчанию

Цитата:
Сообщение от Yappie Посмотреть сообщение
Самый простой вариант попробовать - в начале скрипта дописать

PHP код:
<? header('Content-type: text/html; charset=windows-1251'?>
Дампера?
BaS1S вне форума   Ответить с цитированием
Старый 11.12.2009, 21:34   #6
Специалист
 
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 182
Yappie - как роза среди колючекYappie - как роза среди колючекYappie - как роза среди колючек
По умолчанию

И чтобы в дальнейшем не мучится в локальный денвер лучше прописать, в

В z:\usr\local\apache\conf\httpd.conf
найти AddDefaultCharset и заменить ее на:
Код:
AddDefaultCharset utf-8
В z:\usr\local\mysql5\my.cnf
в раздел [client] такое:
Код:
[client]
port                  = 3306
socket                = /tmp/mysql5.sock
default-character-set = utf8
character-sets-dir    = /usr/local/mysql5/share/charsets
Добавлено через 57 секунд
Цитата:
Сообщение от BaS1S Посмотреть сообщение
Дампера?
Нет, в Ваш скрипт, выводящий сайт.

И опять же туда же можно попробовать дописать (кроме header, после подключения к БД).

Код:
@mysql_query ("set character_set_client='cp1251'"); 
@mysql_query ("set character_set_results='cp1251'");  
@mysql_query ("set collation_connection='cp1251_general_ci'");
Просто смысл в том, что сейчас у Вас на линуксе база в кодировке 1251 (скорее всего).

Последний раз редактировалось Yappie; 11.12.2009 в 21:37. Причина: Добавлено сообщение
Yappie вне форума   Ответить с цитированием
Старый 11.12.2009, 21:52   #7
Специалист
 
Аватар для BaS1S
 
Регистрация: 08.06.2009
Адрес: РФ
Сообщений: 142
Вес репутации: 185
BaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личность
Отправить сообщение для BaS1S с помощью ICQ
По умолчанию

Цитата:
Сообщение от Yappie Посмотреть сообщение
И чтобы в дальнейшем не мучится в локальный денвер лучше прописать, в

В z:\usr\local\apache\conf\httpd.conf
найти AddDefaultCharset и заменить ее на:
Код:
AddDefaultCharset utf-8
В z:\usr\local\mysql5\my.cnf
в раздел [client] такое:
Код:
[client]
port                  = 3306
socket                = /tmp/mysql5.sock
default-character-set = utf8
character-sets-dir    = /usr/local/mysql5/share/charsets
А если прописать это и затем заного создать бэкап с локалки, то после переноса будет отображаться всё те же вопросы?
BaS1S вне форума   Ответить с цитированием
Старый 11.12.2009, 21:56   #8
Специалист
 
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 182
Yappie - как роза среди колючекYappie - как роза среди колючекYappie - как роза среди колючек
По умолчанию

Цитата:
Сообщение от BaS1S Посмотреть сообщение
А если прописать это и затем заного создать бэкап с локалки, то после переноса будет отображаться всё те же вопросы?
Да, это лишь сменит то как по умолчанию НОВЫЕ базы будут создаваться. Вам все равно нужно будет ручками как я описал Вы сменить "collation" у таблиц и столбцов. Как ни крути дамп - настройки на уровне таблицы имеют высший приоритет и их надо поменять...

Хотя во - может есть дампером способ и проще:
http://forum.typo3.biz/showthread.php?t=5720

Код HTML:
1. Бякап дампером (строка define('CHARSET', 'auto'); справляется прекрасно)
2. пишем строку define('RESTORE_CHARSET', 'forced->utf8');
3. прямо в этом же окне, где выполняли только что бякап, разворачиваем базу обратно
define('CHARSET - это в самом дампере надо редактировать.

Только в вашем случае: 1. делаем на локальном компе, РЕДАКТИРУЕМ ДАМПЕР, загружаем на сервер модифицированный дампер, как написано в 2., восстанавливаем ТАМ дамп (отредактированным дампером).

Последний раз редактировалось Yappie; 11.12.2009 в 22:02.
Yappie вне форума   Ответить с цитированием
Старый 12.12.2009, 14:38   #9
Специалист
 
Аватар для BaS1S
 
Регистрация: 08.06.2009
Адрес: РФ
Сообщений: 142
Вес репутации: 185
BaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личностьBaS1S - весьма и весьма положительная личность
Отправить сообщение для BaS1S с помощью ICQ
По умолчанию

Цитата:
Сообщение от Yappie Посмотреть сообщение
Хотя во - может есть дампером способ и проще:
http://forum.typo3.biz/showthread.php?t=5720

Код HTML:
1. Бякап дампером (строка define('CHARSET', 'auto'); справляется прекрасно)
2. пишем строку define('RESTORE_CHARSET', 'forced->utf8');
3. прямо в этом же окне, где выполняли только что бякап, разворачиваем базу обратно
define('CHARSET - это в самом дампере надо редактировать.

Только в вашем случае: 1. делаем на локальном компе, РЕДАКТИРУЕМ ДАМПЕР, загружаем на сервер модифицированный дампер, как написано в 2., восстанавливаем ТАМ дамп (отредактированным дампером).

Теперь вообще буквы изчезли.
ПС: создавать бэкап на локалке неизменёным дампером?

Добавлено через 50 минут
Странно как-то. Проделал обычные действия на локалке - перенёс базу - всё работает как часы. Но как только пытаюсь сделать что-то с хостом - вопросы.

Добавлено через 15 часов 25 минут
Спасибо, Yappie, за советы. Проблема решилась после написания в службу поддержки хоста.

Последний раз редактировалось BaS1S; 12.12.2009 в 14:38. Причина: Добавлено сообщение
BaS1S вне форума   Ответить с цитированием
Старый 12.12.2009, 14:41   #10
Специалист
 
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 182
Yappie - как роза среди колючекYappie - как роза среди колючекYappie - как роза среди колючек
По умолчанию

Не за что Проблему-то поддержка решила
Yappie вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросики IMHO Вопросы по работе системы 3 02.07.2007 16:52


Часовой пояс GMT +3, время: 14:09.