VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Проблема: при использовании UTF-8 буквы "ш" и "И" отображаются некорректно. Буква "ш" отображается как квадратик в IE и как "??" в FireFox, а буква "И" отображается как "п". У многих также встречаются другие проблемы с кодировками схожего характера. Различными пользователями проблемы были заявлены для vBulletin, Simplemachines forum (SMF), Drupal, Joomla... Вполне возможно, что список не ограничивается этими продуктами, так как проблемы идентичны, а значит, лежат за пределами конкретного движка.
При этом подразумевается, то что все кодировки настроены правильно, то есть уже для конкретной Базы Данных по запросу SHOW VARIABLES LIKE 'character_set%' выдается (в phpMyAdmin, например)
В частности, character_set_database и collation_database необходимо верно задать при создании базы. А character_set_server задаётся в файле настроек my.cnf (это относится к настройкам сервера MySQL, и расположен он не в форумной директории): в раздел [mysqld] (или [server]) надо прописать строку character_set_server =utf8 . Очень важно, что должны быть именно нижние подчеркивания, так как в Интернете и на сайте mysql как раз команда выглядит как character-set-server, но, поскольку там речь немного о другом, то в этом случае ничего не будет работать.
Итак, то, что вышесказанное выполнено - подразумевается, потому как, разумеется, данное сообщение не ставит целью предсказывать, как и что будет себе вести при разброде кодировок базы, сервера и т.д..
Важно то, что даже при верных настройках проблема остаётся.
Причина: судя по всему, кривизна движка. Вывод этот напрашивается потому, что есть продукты, работающие безо всяких проблем на том же сервере и на абсолютно аналогично настроенной БД.
Решение: в файле my.cnf, там же, где мы задаём character_set_server, в том же разделе [mysqld] или [server], необходимо прописать команду, отменяющую настройки character_set на стороне клиента. Таким образом, отсекается кривизна скрипта, эта команда лишает скрипт возможности проявить кривизну и испортить ею выдачу. Итак, надо прописать туда строку: skip_character_set_client_handshake. После этого надо перезапустить сервер баз данных MySQL.
Замечания:
--некорректно работающий форум не начинает работать корректно сразу после этого. Для того, чтобы всё заработало, его надо переустановить заново
--это решение применимо для MySQL, начиная от 4.1.15 и 5.0.13 .
Вывод: если мы не имеем доступа к серверным настройкам, либо используем более старые версии MySQL, описанное здесь явление может стать весьма серьезной проблемой для реализации проекта в кодировке UTF-8 с использованием ряда лидирующих на рынке продуктов, в том числе vBulletin.
Статья бесполезна :(
my.cnf править никто не даст.
По теме: перенес дапм с одного хостинга на другой. Столкнулся с траблой, вместо буквы "ш" пишет "??" :(
Кто подскажет, как решить? Нужно както дамп переконвертить или заменить что то на что то? Хелп! :(
Статья бесполезна :(
my.cnf править никто не даст.
По теме: перенес дапм с одного хостинга на другой. Столкнулся с траблой, вместо буквы "ш" пишет "??" :(
Кто подскажет, как решить? Нужно както дамп переконвертить или заменить что то на что то? Хелп! :(
Конвертация поможет. Т.к. правил в своё время ручками и толку было мало.
@mff
Продвинутый
Join Date: Oct 2008
Location: Russia
Posts: 239
Версия vB: 4.1.4
Пол:
Reputation:
Опытный 45
Репутация в разделе: 44
0
Quote:
Originally Posted by Diablos
Конвертация поможет. Т.к. правил в своё время ручками и толку было мало.
Подскажите, как конвертануть дамп?
Конкретно, вместо буквы "ш" - "??" вместо буквы "И" - "п?" :(
Last edited by mff : 09-10-2009 at 09:07 PM.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,816
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20315
Репутация в разделе: 8468
0
есть софтина для винды UltraEdit
уже довольно давно пользуюсь для конвертирования дампов больших размеров (больше гига) из win-1251 => UTF-8 и обратно
но!
перед конвертом, нужно что бы все бинарные данные были в файловой системе, иначе они просто не будут работать, например вложения
@mff
Продвинутый
Join Date: Oct 2008
Location: Russia
Posts: 239
Версия vB: 4.1.4
Пол:
Reputation:
Опытный 45
Репутация в разделе: 44
0
kerk, но тоже самое я могу и в notepad++ сделать? Только смысл какой?
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,816
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20315
Репутация в разделе: 8468
0
Quote:
Originally Posted by mff
в notepad++
гиговый дамп в этом блокноте?
сомневаюсь
@mff
Продвинутый
Join Date: Oct 2008
Location: Russia
Posts: 239
Версия vB: 4.1.4
Пол:
Reputation:
Опытный 45
Репутация в разделе: 44
Проблема решена!!!
2
kerk, смысла нету перекодировать, дамп уже с ошибками, их как то исправить нужно.
Вот по сабжу!
Code:
/*
* Исправление кодировки букв "ш" и "И" в MYSQL
* автор: Nc_Soft
* 18.07.09
*/
/*
Частенько встречается при переносе бд, либо при шаманстве с кодировками
буквы "ш" и "И" оказываются битыми (речь идет о utf-8 конечно)
буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136)
буква "И" = chr(208).chr(63) / правильно chr(208).chr(152)
Чтобы пофиксить делаем 2 запроса
*/
UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
Last edited by mff : 09-11-2009 at 08:40 AM.
Reason: Добавлено сообщение
@zgas
Простоузер
Join Date: Mar 2009
Posts: 11
Reputation:
Novice 0
Репутация в разделе: 0
0
Пожалуйста подскажите, как сделать данный запрос? К примеру в Navicat...
p.s. Вроде бы разобрался как делать запрос, но мне пишет что таблицы tbl не существует ><