htmlbook.ru - настольная книга администратора

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Loading

Go Back   форум vBSupport.org > > >
Register Изображения Меню vBsupport Files Manager Аллея Звёзд Реклама на форуме Search Today's Posts Mark Forums Read
  • Мемберка
  • Администраторам
  • Premoderation
  • For English speaking users
  • Изменения в правах
  • Каталог Фрилансеров
Пароли на скачивание файлов в Member Area меняются автоматически каждый день
Если вам нужно скачать какой то скрипт, за паролем ко мне в ЛС
привет какирам kerk
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Не можете скачать вложение?
Изменения в правах групп пользователей
внимательно читаем эту и эту темы
Короткая версия - тут
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

 
 
Old  
AleX
vBManiac
 
AleX's Avatar
Exclamation [Статья] Кодировка vBulletin 116

Так-с, очень много проблем, связанные с кодировкой форума. В итоге у некоторых появляются “кракозябры” (непонятные спецсимволы и т.п.), а у некоторых вообще отсутствует язык на форуме.

Как с этим бороться?

Существует последовательность определения своих действий:
1. Используя PHPMyAdmin “залезть” в БД форума, и определить в какой кодировке находятся таблицы;
2. Определить кодировку Мускула (MySQL);
3. Предпринять действия к предотвращению проблемы.

Допустим, БД у нас в кодировке utf-8, а соединений мускула и его кодировка в ср1251.

Будем использовать стандартную функцию файла config.php. Открываем данный файл и находим следующую строчку:
Code:
// $config['Mysqli']['charset'] = 'utf8';
По умолчанию она закомментирована. Нам же следует ее раскомментировать (убрать //) и указать требуемую нам кодировку. Т.е., выйти должно следующее:
Code:
$config['Mysqli']['charset'] = 'utf8';
Данный прием работает лишь в том случае (да, бывают и чудеса), если Вы используете MySQLi, а не MySQL и по большей части при условие чистой установки (!). Конфигурация так же находится в файле config.php:
Code:
$config['Database']['dbtype'] = 'mysql';
Вот и все.


Что делать, если это мне не помогло?
Самое главное мы сделали — отрегулировали всеобщую кодировку БД и vB. Но, если у Вас все же проблема отображения некорректных символов осталась, то следует "копать" уже в другую сторону.
Последовательность действий:
1. Убедиться, что предыдущие действия по отрегулировке кодировки имеют правильный характер. Одним словом, дать себе и машине понять, что на серверной части все так, как и должно быть;
2. Проанализировать показатели браузера по выбору кодировки.

Да, как оказалось, браузер может и не "почувствовать" изменения, которые Вы проводили. В таком случае, весь процесс отладки завершен лишь наполовину.

Как пример: Имеется форум с параметрами кодировки — БД: Кодировка базы (utf-8), кодировка таблиц (utf-8), сопоставление MySQL (utf-8), языковая кодировка (utf-8).
В браузере каким-то боком все выводится "кракозябрами". Смотрим кодировку, которую выбрал браузер и делаем ужасающее открытие — он отображает Вам страницу в кодировке ср1251. Что же делать?
А следующие:
1. Если в корне форума нет .htaccess, то создать его;
2. В этом самом файле .htaccess прописать:
Code:
AddDefaultCharset [нужная для Вас кодировка]
В нашем случае, будет выглядеть так:
Code:
AddDefaultCharset utf-8
Более подробная информация по .htaccess: Указание явной кодировки

Данный метод решения — брутален. Но, полезен для тех, кто не может прочесть даже символы в админ-панели. Для тех, кому удалось перескочить на английский язык, предлагаю глобальное решение проблемы:
Админ-панель — Языки и фразы — Управление языками — Редактировать настройки — Набор символов HTML — [выставить нужную кодировку]

Есть еще варианты?

Да, есть еще один вариант. Но, он кардинально меняет кодировку соединения. Если обычное решение не помогает, значит у вас большие проблемы с кодировками, которые надо решать, иначе есть вероятность в будущем получить бекапы, которые невозможно восстановить.

Тем не менее, для тех, кто хочет, чтобы работало прямо сейчас, ещё один вариант решения:

Берем файл init.php с папки includes, находим там строчку (сразу после подключения):
PHP Code:
{
vbulletin_demo_init_db();

И после этой строчки используем сия код:
PHP Code:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'"); 
Все проблемы должны решиться.
Другая ситуация - БД в ср1251, Мускул в utf-8. Берем все тот же init.php, находим ту самую строчку:
PHP Code:
{
vbulletin_demo_init_db();

И используем этот код:
PHP Code:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'"); 
Вот и все.

-------------------------------------------------
Внимание: Ниже - для версии 3.8! |
-------------------------------------------------

Найти:
PHP Code:
// make $db a member of $vbulletin 
Перед ней добавить:
PHP Code:
mysql_query ("set character_set_client='cp1251'"); 
mysql_query ("set character_set_results='cp1251'"); 
mysql_query ("set collation_connection='cp1251_general_ci'"); 
Или
PHP Code:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'"); 
-------------------------------------------------
Внимание: Ниже - для версии 4.x! |
-------------------------------------------------

Найти:
PHP Code:
// make $db a member of $vbulletin
$vbulletin->db =& $db
Перед ней добавить:
PHP Code:
mysql_query ("set character_set_client='cp1251'"); 
mysql_query ("set character_set_results='cp1251'"); 
mysql_query ("set collation_connection='cp1251_general_ci'"); 
Или
PHP Code:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'"); 
Тут все.

P.S. Не забудьте наново перезагрузить языковый пакет (!)

Примечание: Спасибо zCarot'у за актуальные правки. =)
Внимание: Если Вам данная статья не помогла, то воспользуйтесь статьей OldEr.
Attached Thumbnails
codepages.jpg  

Last edited by AleX : 04-22-2015 at 08:45 PM.
 
Old  
phobos
Простоузер
Default 0

У меня похожая ситуация, что только уже не пробовал.
База на 1251, MySQL - utf-8.

После моих экспериментов все отображается нормально кроме названий разделов и форумов.

phobos добавил 10.11.2010 в 20:47
Извиняюсь, небольшое уточнение.
Такая ситуация возникла после добавления к форуму блогов і CMS

phobos добавил 10.11.2010 в 20:50
А! Заработало! Просто отредактировал название первого роздела, сохранил, и вуаля! Все читаемо!

Last edited by phobos : 11-10-2010 at 09:50 PM. Reason: Добавлено сообщение
 
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
Old  
Jinfaa
Простоузер
Default 0

Я встретился с проблемой кодировки. У меня база работает в UTF-8 и соединение такое же. На сайте отображаются краказябры
Code:
Warning: array_keys() [function.array-keys]: The first argument should be an array in [path]\includes\functions.php on line 5222

Warning: Invalid argument supplied for foreach() in [path]\includes\functions.php on line 5222

Вы были заблокированы по следующей причине:
Причина не указана.

Дата снятия блокировки:
Я изменил в файле init:
Code:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
Поэтому краказябры
но когда я меняю на

Code:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Все нормально отображается но мне нужно чтобы использовалась именно кодировка UTF-8.

.htaccess не работает т.к. IIS скажите пожалуйста как сделать чтобы сайт нормально отображал UTF-8?
 
Old  
Revenger
Простоузер
Default 0

Люди, подскажите плиз. У всех вроде такие же "болячки" но в тоже время все разные или написано так, что не понятно с какого края подойти к этой долб... базе.

Движок 4.0.3. Нуллед Финт. Русификатор вин1251 был сразу в инсталяции. SQL UTF-8, сравнение сейчас UTF-8. База переезжала с другого сервера и переделана из АйПБ. В данный момент отображается только если в браузере кодировка вин1251. Манипуляции с прописыванием строк в инит.пхп или приводят к вопросикам или к сообщению, что я забанен (тоже в виде кракозябр) При варианте с кодирвкой ютф-8, вписывание строк приводит к появления ошибок на странице в каком-то фале (ранее уже кто-то упоминал подобное). В конфиге строку раскоментировал - результат отрицательный. Язык под кодировку ютф-8 от Моркови ставил - тоже не помогло. Прописыванием в дампер принудительного перевода базы в ютф-8 тоже не помогло. Везде в дампе стоИт ютф-8
По совету OlDer полез в дамп редактором (как написано в блоге), редактор определил две кодировки - ютф-8 и вин1252(!) При назначении любой из них русские буквы не появлялись. Полез на онлайнсервис (с его же блога), там выяснилось, что часть кодировки дампа у меня в исходном коде ютф-8 (все заголовки, меню скрипта и т.п.), но отображается как вин1251 (почему редактор не отображает тогда?) а часть в вин1252(+ iso8915 кажется) это как раз посты, темы и разделы) Я вручную с помощью сервиса перекодировал кусками все, что было в ютф-8 на русский удобочитаемый, вставил в редакторе вместо кракозябр, сохранил, но при импорте дампа вылазиет ошибка в строках, визуально ничем не отличающихся от дампа с кракозябрами...
Что лучше, перекодировать (хоть и частями) посты или всетаки перевод названий разделов и тем?
Есть ли у кого-то пошаговая инструкция, как сделать, если всё в ютф-8, а посты и темы в вин1251?

п.с. Может как и многие посты здесь, написал непонятно, но другими словами не получается, т.к. голова кипит уже от этого гемор... Простите.

Revenger добавил 10.12.2010 в 12:44
Итак, делюсь пошаговой "инструкцией" как переделать базу (только посты и разделы) из непонятной (в браузере как вин1251) в utf-8, как и все остальное на сервере:
Если Вы не специалист (если специалист, какие-то шаги можете пропустить или делать вообще по-своему):
1.Сделал дамп дампером.
2.Открыл блог OldEr'a, скачал редактор. В редакторе открыл дамп, он предложил выбрать из пары кодировок нужную. Определив с помощью онлайнсервиса (с того же блога) исходную кодировку моей базы, выбрал utf-8 (т.к. вся база, сервер и сопоставление таблиц в этой кодировке) и сохранил дамп в кодировке windows1252(iso8... не помню какой исо).Редактор предупредил, что часть символов будет потеряна и не обманул как выяснилось в последствии.
Замечу, что после открытия дампа я так и не увидел русских символов.
3. Открываем сохраненный дамп и выбираем уже кодировку в которой сохраняли, т.е. windows1252 если редактор предложит выбрать (у меня не предложил). Русские символы так и остаются в виде "????????? ???? ????? ????????".
4. Меняем кодировку на windows1251 (внизу справа в редакторе можно дважды клацнуть на кодировку. Что мы видим? Да то, что текст с сообщениями поменялся на удобоваримые символы!
5. Мне нужно было сделать базу в utf-8. Сохраняю с использованием нужной кодировки, не обращая внимание на то, что язык самого форума так и остался с кракозябрами в виде "?”???????????????? ???€??????" Но как я понял, это не мешает.
Обращаю внимание на то, что при попытке залить данный дамп, дампер выдает ошибку в районе таблиц INSERT INTO `customprofilepic`. Как я понял, это из-за ранее потеряных символов при пересохранении кодировки.
6. При ошибке я сделал так: Удалил из базы сервера все, кроме данной таблицы (или как его называют? строка или еще как...), в редакторе, в правленой базе вырезал все, что относится к этому разделу (это что-то типа раздела базы с картинками, летят коды гифов вроде бы) от
строки # TC`customprofilepic`utf8_general_ci ; включительно (у меня это строка 5021) до # TC`datastore`utf8_general_ci ; (у меня строка 5178) ЭТУ СТРОКУ НЕ ТРОГАЕМ!.
7. Сохраняем дамп (я делал каждое сохранение под разными именами, чтобы отследить ошибку если что)
8.Заливаем дампером (он уже не матюкается), смотрим на результат - одни вопросики вместо текста, правда? Вот тут я дописал в файл init.php ранее рекомендуемые строки (доперекодирования базы это не приводило ни к какому результату):
Code:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
9.Браузер начинает отображать страницу в utf-8, после переустановки языкового пакета для кодировки utf-8 все становится на русском, кроме постов и тем с кириллицей. Заходим в админку, и как ранее не раз писАлось - открываем для редактирования первый раздел с кириллицей (с вопросиками вместо текста) и ничего не делая сохраняемся. Возможно поможет простое сбрасывание кэша, но ... я тут не советчик.
10. Обновляем страницу форума и.... Видим форум с русскими постами, разделами и в кодировке utf-8 так же, как и в pHpMyAdmin во всех разделах мы видим нормальный русский текст.

п.с. Я увидев вопросики в заголовках тем, сначала (до прописывания сопоставления в файл init.php) полез в открывание и сохранение раздела, в итоге он так и остался с вопросиками, т.к. видно сохранился с моей помощью не правильно. Это нужно делать после всех "костыликов" в файлах форума.

Если что - извиняйте. НаписАл так как делал сам, просидев не одну ночь, к тому же... я не специалист, всё делаю "методом тыка".

Last edited by Revenger : 12-10-2010 at 01:44 PM. Reason: Добавлено сообщение
 
Old  
niceteam
Простоузер
Default 0

Quote:
Originally Posted by ITpeople View Post
помогите решить проблему ш и И.
хостер переносил сайты на новый сервер, после переноса получил квадратики, бэкапы делаю регулярно - пробовал просто восстановить то что было - не помагает.

Пробовал из шапки добавить строчки в init.php или раскомментировать строку в config.php - выдает те же ошибки что и у многих и не помагает.
Строка в htaccess тоже ничего не дала.

Если создаю новую тему или редактирую старые темы, сообщение, разделы, пользователей - обе буквы отображаются нормально - как вариант исправить везде вручную, но база уже достаточно большая что бы руками все исправить.

По идее все всегда было в кодировке utf-8, однако сейчас смотрю таблицы в phphmyadmin - и большинство в cp1251_general_ci, хотя внизу в сумме стоит utf8_unicode_ci
MySQL connection collation: utf8_unicode_ci

Версия форума 3.8.2

Подскажите, что лучше предпринять?



Для быстрой замены нашел такой вариант:

буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136)
буква "И" = chr(208).chr(63) / правильно chr(208).chr(152)

Делаем 2 запроса:
UPDATE `our_table` SET `our_column` = REPLACE(
`our_column`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);

UPDATE `our_table` SET `our_column` = REPLACE(
`our_column`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);

здесь "out_table" - название нашей таблицы, "our_column" - столбец, в котором расположены данные.

Не понял последнюю строку про out_table и our_column - что вместо них нужно подставить?
Меня тоже интересует данный метод может кто пояснить?

niceteam добавил 21.12.2010 в 19:59
Как заставить булку изначально при установке писать в базу в utf8?
Что сделать надо для этого на форуме вообще есть люди на этом, у меня "и" и "ш" кракозяблами!
В базе следующая картина таблицы жумлы которые изначально были ф утф они нормально отображаются, таблицы булки каракулы. Смотрел акед падом, все сделано в utf8 и база и всё, пробывал прописывать и в конфиге, в инет прописывал всё краказябалми.

niceteam добавил 21.12.2010 в 20:11
Я все попробывал, единственное мне не понятно с запросом sql я его выполнил но он ничего не сделал может там под каждую базу свой запрос надо менять значения какието? как и,ш поправить?

niceteam добавил 21.12.2010 в 21:30
Помогло раскомментирование строи в конфиге //$config['Mysqli']['charset'] = 'utf8'; при переустановке, если у кого вместо ш и появляется ?

Last edited by niceteam : 12-21-2010 at 10:30 PM. Reason: Добавлено сообщение
 
Old  
hcir
Продвинутый
 
hcir's Avatar
Default 0

Подскажите, пожалуйста. После одновременного обновления форума с 3.6.12 на 3.8.6 с переносом на другой хостинг имеется такой нюанс: некоторые (но не все) буквы с диакритикой (умляутами), например из немецкого или польского языка отображаются в виде html-последовательностей. Это касается и как уже оставленных сообщений, так и при попытке запостить новое.

Пример:

mit freundlichen Gr??en
превращается в
mit freundlichen Gr& #252;& #223;en
(после & вставлены пробелы, чтобы этот форум не превращал символы обратно).

То есть в данном случае вместо двух немецких символов ? и ? отображается их корректный html-entity код. Что бы это могло быть?

На старом хостинге с этим тоже было довольно загадочно, в какой-то момент оно не работало, потом при обновлении с 3.6.8 на 3.6.12 самопроизвольно "излечилось" (было это пару лет назад), теперь вот при очередном обновлении-переезде тоже что-то странное.

Других проблем, т.е. с русским языком и английским, не вижу. Вопросиков и прочего нет. Сам форум в win-1251, база utf-8.

Подскажите, в какую сторону смотреть. Прежде, чем приниматься за эксперименты, хотелось бы понять, м.б. кто-то именно с подобным сталкивался. Просмотрел всю эту тему, в ней только два сообщения с похожими, но не аналогичными проблемами: #27 и #43.
 
Old  
Luvilla
Блондинка с электро......
 
Luvilla's Avatar
Default 1

hcir, проблема была описана http://vbsupport.org/forum/showthread.php?t=36797

сообщений о том, что есть фикс, мне не попадалось
перевод форума в утф, по идее, должен решить проблему...
 
Old  
InSAn
Продвинутый
 
InSAn's Avatar
Default 0

Небольшое дополнение (все ниже - мое ИМХО).
Я бы расширил бы код до:
PHP Code:
mysql_query ("SET collation_connection = 'cp1251_general_ci'");
mysql_query ("SET collation_database = 'cp1251_general_ci'");
mysql_query ("SET collation_server = 'cp1251_general_ci'");
mysql_query ("SET character_set_client = 'cp1251'");
mysql_query ("SET character_set_connection = 'cp1251'");
mysql_query ("SET character_set_database = 'cp1251'");
mysql_query ("SET character_set_results = 'cp1251'");
mysql_query ("SET character_set_server = 'cp1251'"); 
Аналогично и с 'utf8'
 
Old  
hcir
Продвинутый
 
hcir's Avatar
Default 0

Luvilla, вот оно как, оказывается. А рылся в поиске довольно долго и ту тему не нашел. Ситуация не радует, конечно. :(
Переводить форум в utf прямо сейчас что-то не хочется, тем более, что кроме форума есть еще и сайт, который тоже в win-1251.

Оффтоп
 
Old  
OldEr
Мастер
Master
 
OldEr's Avatar
Default 0

InSAn, этого достаточно:
HTML Code:
mysql_query("SET NAMES 'X' COLLATE 'Y''")
.
 
Old  
kerk
k0t
 
kerk's Avatar
Default 0

Quote:
Originally Posted by OldEr View Post
этого достаточно:
не всегда и не везде
 
 

Tags
utf-8, utf8, windows-1251, кодировка

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 07:57 AM.


Powered by vBulletin® Version ?.?.?
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.