Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Ср Май 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 раз |
|
Вернуться к началу |
|
 |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Вт Июн 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
После чего залить исправленный дамп обратно в базу
Надеюсь, это сбережет многим массу времени и нервов. |
|
Вернуться к началу |
|
 |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Чт Июл 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 |
|
Вернуться к началу |
|
 |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
|
Вернуться к началу |
|
 |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Чт Авг 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'»);
После этого всё должно заработать. |
|
Вернуться к началу |
|
 |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Пт Окт 28, 2011 2:00 pm Заголовок сообщения: |
|
|
e107 проблема с И и ш в кодировке utf8
Править надо файл mysql_class.php на 168, 169 строку поместить mysql_query('SET NAMES utf8'); mysql_query('SET CHARACTER SET utf8'); весь сайт станет в иероглифах, их переписать на кириллицу, но в этом случае кириллица будет уже с нормальными И и ш. |
|
Вернуться к началу |
|
 |
admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Ср Окт 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 );
сохраняем файл |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|
|