- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Проблема: при использовании UTF-8 в ряде форумов и CMS буквы "ш" и "И" отображаются некорректно. Буква "ш" отображается как квадратик в IE и как "??" в FireFox, а буква "И" отображается как "п". У многих также встречаются другие проблемы с кодировками схожего характера. Различными пользователями проблемы были заявлены для vBulletin, Simplemachines forum (SMF), Drupal, Joomla... Вполне возможно, что список не ограничивается этими продуктами, так как проблемы идентичны, а значит, лежат за пределами конкретного движка.
При этом подразумевается, то что все кодировки настроены правильно, то есть уже для конкретной Базы Данных по запросу SHOW VARIABLES LIKE 'character_set%' выдается (в phpMyAdmin, например)
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8,
а по запросу SHOW VARIABLES LIKE 'collation%' выдается, например,
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci.
В частности, character_set_database и collation_database необходимо верно задать при создании базы. А character_set_server задаётся в файле настроек my.cnf: в раздел [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 с использованием ряда лидирующих на рынке продуктов, в том числе платных.
В одном из скриптов с таким глюком добавил при подключении к базе SET_NAMES и всё встало на место.
в другом - ещё смешнее, где-то в глубине кода наткнулся на кодировку western.
все самописные скрипты работают нормально.
Господа, а может кто внятно объяснить, куда надо добавлять SET_NAMES? Про этот метод "лечения" читал. Но вот если взять тот же vBulletin, там обращение к базе, небось, в каждом файле присутствует, а файлов - тысячи. Подразумевается, что надо добавлять везде? Либо в какой-либо определенный файл серверных настроек, либо в .htaccess, либо ... в-общем - куда?
В конфигурационный файл, который должен по идее инклудиться во все файлы.
У меня была похожая проблема, у меня все sql конструкции вынесены в
sql.config.php
В функцию соединения с базой добавлял строку, все работало.
Вобщем что нужно сделать, если скрипт толковый, то обычно мускул функции выносятся в отдельный файл, нужно его найти, в нем отыскать функцию соединения с БД и в этой функции после команды соеднения выполнить команду set_names нужная_кодировка .
Но проблема может остатся, с данными уже записанными в БД, в зависимости от того как эти символы записались, возможно прийдется сливать дамп и пытаться его конвертировать.
Сочувствую :) мне такие танцы с бубном знакомы уже
Сочувствую мне такие танцы с бубном знакомы уже
Да я-то решил уже этот вопрос, но у меня выделенный сервер, где я могу настраивать, что душе угодно. А вот как быть тем, кто желает запускать vB на shared'е в UTF-8, непонятно.
Пытался я это выяснить и в саппорте vB, но, конечно, без предоставления им всей "болезни" плюс логины/пароли они ничего сказать не могут, а вновь всё портить ради науки я не готов.
За разъяснение большое спасибо.
команда SET NAMES "кодировка"
должна выполняться сразу после коннекта с MySQL.
после этого мускул отдает/принимает данные в указанной вами кодировке
Если же в базу уже забиты кривые данные, то, боюсь, что эти Ӓ ничем уже не восстановить..
команда SET NAMES "кодировка"
должна выполняться сразу после коннекта с MySQL.
Не сомневаюсь, что на уровне теории эти советы, прозвучавшие здесь уже не раз, может, и верны, но я лично (а может, и не только я) так и не понял, как конкретно это может помочь решить описанную конкретную проблему. А именно - куда конкретно в движке под конкретным названием vBulletin надо эту конкретную строку прописать. Если может кто дать ответ в виде: "такую-то строку надо прописать в такой-то файл вот в это место" - это будет реально полезно.