FAQ   •  Поиск
Вход  •  Регистрация
 
проблемы с кодировками в известных скриптах и их устранение

 
Начать новую тему   Ответить на тему    Список форумов newssoft.ru -> Серверные команды
Предыдущая тема :: Следующая тема  
Автор Сообщение
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Ср Май 20, 2009 11:20 am    Заголовок сообщения: проблемы с кодировками в известных скриптах и их устранение Ответить с цитатой

includes/class_core.php
после строки
$this->connection_master = $this->db_connect($w_servername, $w_port, $w_username, $w_password, $w_usepconnect, $configfile, $charset);
mysql_query("SET NAMES 'cp1251'");

варианты
http://www.vbsupport.org/forum/showthread.php?t=23843&page=2

так же при переносе с серверов в lain
база не преобразовуется а просто в файл init.php с папки includes
перед
// make $db a member of $vbulletin
пишем
mysql_query ("set character_set_client='latin1'");
mysql_query ("set character_set_results='latin1'");
mysql_query ("set collation_connection='latin1_swedish_ci'");


Последний раз редактировалось: admin (Сб Авг 01, 2009 3:41 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Вт Июн 30, 2009 7:34 pm    Заголовок сообщения: Ответить с цитатой

http://hostinghelp.biz/content/решение-проблем-с-нарушением-отображения-букв-ш-и-и-в-резултате-неудачной-перекодировки-mysq

Если в mysql принудительно указать кодировку cp1251, а потом выполнить смену кодировки базы на UTF-8, то вместо букв "ш" и "И" будут стоять вопросики.
Типичное проявление - бекап баз в кодировке UTF-8 с последующим их восстановлением или просто апдейт CMS, для которых родная кодировка - юникод. Например - Wordpress, Drupal

Изучив Google, было найдено масса подобных проблем но все решение сводилось к удалению базы и заливки их резервной копии, что конечно не может быть решением.

Изучав особенности кодировки, я обратил внимание на то, что в mysql дампе буквы ш и И имели неверный код:
ш - 0xD13F
И - 0xD03F

В то время как верные коды для этих букв:
ш - 0xD188
И - 0xD098



Для интереса я проверил как отрабатывает на коды символов Perl в юникодной консоле:

perl -e 'printf "%#x\n", ord("И");'
0xd0
perl -e 'printf "%#x\n", ord("ш");'
0xd1

Таким образом данный сбой происходит из-за каких то нарушений в таблицах кодировок.

Исправить проблему очень просто, достаточно сделать дамп и выполнить две замены через Perl:

LC_ALL=C perl -pi -e "s|\xD1\x3F|\xD1\x88|g" dump.sql
LC_ALL=C perl -pi -e "s|\xD0\x3F|\xD0\x98|g" dump.sql

После чего залить исправленный дамп обратно в базу



Надеюсь, это сбережет многим массу времени и нервов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Чт Июл 30, 2009 10:50 am    Заголовок сообщения: Ответить с цитатой

при переносе

mysqldump --default-character-set=latin1 --skip-set-charset USER_BASE > /home/USER/USER_BASE.sql


perl -pi.bak -e "s/LATIN/CP1251/g"/home/USER/USER_BASE.sql

mysql -u USER -p USER_BASE < /home/USER/USER_BASE .sql
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Пт Май 07, 2010 9:20 pm    Заголовок сообщения: Ответить с цитатой

кеширование в wp без плагинов
http://www.wp-info.ru/keshirovanie-v-wordpress-bez-ispolzovaniya-plaginov/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Чт Авг 12, 2010 10:37 pm    Заголовок сообщения: Проблемы с кодировкой в E107 Ответить с цитатой

Проблемы с кодировкой в E107
Существует четыре этапа в проблеме с кодировкой, которые нужно понимать:

1. Кодировка в которой находятся языковые файлы сайта
2. Кодировка в которой находится база данных
3. Установки обработчика пхп
4. Указание браузеру какая кодировка используется на сайте.

Все четыре пункта должны быть или указывать на одну кодировку. Начнём с первого пункта

1. Если языковые файлы не соответсвуют нужной кодировке, вы можете их перекодировать с помощью программы «Штирлиц» или «EmEditor». Перекодировать надо всю папку e107_languages, файлы в папке e107_themes (тему которая используется на сайте) и файлы в папках e107_plugins которые вы используете.

2. Кодировка в базе данных обычно прописана по умолчанию у вашего хостера. Она может и не соответсвовать той кодировке что вам нужна, но к счастью в базах данных существует такая вещь как «сопоставление» (collation), вот его то нам и надо будет выставить в нужную кодировку.

3. Установки обработчика пхп может оказаться нерешимой проблемой, если хостер установил по умолчанию какую либо из кодировок, но обычно никаких кодировок по умолчанию не устанавливается, поэтому пхп обрабатывает в той кодировке, в которой хранятся данные в базе данных.

4. Указать кодировку для браузера нужно в двух местах (если вы решили указать вин-1251)

а. В файле Russian.php в папке e107_languages\Russian нужно прописать в строку define(«CHARSET», «windows-1251»);

б. В файле /e107_handlers/admin_log_class.php нужно прописать после строки
$if (!defined('e107_INIT')) { exit; }
следующие:
mysql_query («set character_set_client='cp1251'»); mysql_query («set character_set_results='cp1251'»); mysql_query («set collation_connection='cp1251_general_ci'»);


После этого всё должно заработать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Пт Окт 28, 2011 2:00 pm    Заголовок сообщения: Ответить с цитатой

e107 проблема с И и ш в кодировке utf8

Править надо файл mysql_class.php на 168, 169 строку поместить mysql_query('SET NAMES utf8'); mysql_query('SET CHARACTER SET utf8'); весь сайт станет в иероглифах, их переписать на кириллицу, но в этом случае кириллица будет уже с нормальными И и ш.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
admin
Site Admin


Зарегистрирован: 11.09.2008
Сообщения: 390

СообщениеДобавлено: Ср Окт 19, 2016 1:39 am    Заголовок сообщения: joomla ????????????????????? Ответить с цитатой

https://trust-host.ru/support-host/help-host/joomla/159-znaki-voprosov-vmesto-teksta.html
Как известно CMS Joomla изначально создана на работу в UTF8 кодировке, но т.к. нам она нужна в русском варианте, то необходимы внимательность и дополнительные правки для корректного отображения сайта.

Самая распространенная ошибка, это знаки вопросов вместо текста, примерно так:

??????? slovo ???????? ......


Как видим латинские буквы отображаются отлично, а вот русские идут знаками вопросов, в каждом случае требуется индивидуальный подход, но мы сейчас разберем это комплексно. Т.е. наш способ поможет вам в 90% из 100.



Начнем по порядку:

1. Заходим в phpMyAdmin и просматриваем кодировку таблиц, должна быть cp1251





2. Идем в саму таблицу и смотрим в каком виде текст статей, если все в порядке, то пропускаем этот пункт, если вопросики, то делаем так:
Открываем дамп с базой данных (сам файл) и сохраняем его в кодировке cp1251
Идем в phpMyAdmin и при импорте выбираем кодировку cp1251
Все, теперь знаков вопроса в таблицах не должно быть.



3. Заходим через фтп или менеджер файлов ISPmanager в папку с вашим сайтом /www/ваш_домен/ и переименовываем htaccess.txt в .htaccess



4. Открываем файл /www/ваш_домен/includes/database.php ,
в нем находим
$this->_table_prefix = $table_prefix;
после вставляем
@mysql_query("SET NAMES 'cp1251'", $this->_resource);
@mysql_query( "set session character_set_server=cp1251", $this->_resource );
@mysql_query( "set session character_set_database=cp1251", $this->_resource );
@mysql_query( "set session character_set_connection=cp1251", $this->_resource );
@mysql_query( "set session character_set_results=cp1251", $this->_resource );
@mysql_query( "set session character_set_client=cp1251", $this->_resource );
сохраняем файл
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов newssoft.ru -> Серверные команды Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
AllSat 22  - photographe de mariage - 2006