Заглавная буква И режет сообщения (отображаются пустыми)

Автор Elaneor, 13 мая 2013, 15:51:17

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Elaneor

Здравствуйте!
Есть форум http://souzwiccan.ru/forum
SMF - 2.0.4
Кодировка - UTF-8 (со времени установки).
Тема - отредактированная (только картинки) - Green Flowers by Tamurilart.com

Форум перенес уже два переезда (оба по вине хостера).

Только недавно заметили, что некоторые сообщения в темах перестали отображаться.
Дело в букве И, которая выглядит, как кракозябра - и если в сообщении есть заглавная буква И, то текст сообщения не отображается (хотя отредактировать пост можно).
Погуглив, через MyPHPAdmin посмотрела кодировки, которые сейчас используются базой данных. Список такой:









character_set_clientutf8
character_set_connectionutf8
character_set_databasecp1251
character_set_filesystembinary
character_set_resultsutf8
character_set_servercp1251
character_set_systemutf8
character_sets_dir/usr/local/share/mysql/charsets/

Подозреваю, что где-то здесь кроется проблема.
Подскажите пожалуйста, как можно наладить отображение и "подружить кодировки"?


Elaneor

#2
Действительно, в одном из  ( :-\ ) файлов этого объявления кодировки не было.
Я оставила более новый файл, отредактировала его, добавив объявление кодировки.

Однако, стало только хуже *_*





А стоило убрать строку:

$db_character_set = 'utf8';

Отображение основного текста нормализуется (но и сообщения с заглавной И пропадают).

Как это можно привести к общему знаменателю, подскажите пожалуйста?

digger®

Цитата: Elaneor от 13 мая 2013, 21:17:13А стоило убрать строку:Код: [Выделить]$db_character_set = 'utf8'; Отображение основного текста нормализуется (но и сообщения с заглавной И пропадают).Как это можно привести к общему знаменателю, подскажите пожалуйста?
У вас БД значит не UTF8, раз такое происходит. Вот ее и приводите к общему знаменателю с форумом.

Elaneor

#4
Ситуация следующая.
Базу данных форума перевели на utf8-general ci, с помощью скрипта

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as sqlcode
  FROM `information_schema`.`TABLES` t
WHERE 1
   AND t.`TABLE_SCHEMA` = 'db_name'
ORDER BY 1

- Этот скрипт дал список команд для конвертации всех таблиц.
Список команд был скопирован в поле запроса и так же выполнен.
Теперь все таблицы имеют кодировку utf8_general_ci.

Также выполнена команда
ALTER DATABASE database1 DEFAULT  CHARACTER SET utf8 COLLATE utf8_general_ci;

Однако, это не помогло.
Если снова добавить в Settings.php указание кодировки, мы снова имеем кракозябли.
Если снова указание кодировки убрать, режутся посты с буквой И.
Где еще можно посмотреть настройки?


UPD Из FAQ был выполнен запрос
INSERT INTO smf_settings (variable, value) VALUES ('global_character_set', 'UTF-8')
часть отображаемых кракозябл (которые отображались при прочей нормальной работе-например в названиях веток в колонке "Последний ответ") ушла.
Остались проблемы c постами с заглавной буквой И

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
....
<script type="text/javascript"><!-- // --><![CDATA[
......
var smf_charset = "UTF-8";
......
// ]]></script>

Elaneor

Кажется, я исчерпала доступные мне варианты.
Техподдержка хостинга говорит, что дело в "движке",а в "движках они не секут".
Но почему до переезда этих багов не было?

Что еще можно сделать?

Сапожник

Может совсем не в тему, но что-то было у меня с буквами И, Р и Э как-то решилось, но касательно именно этих букв много читал в интернете разного.  Правда что та было я уже не помню.
http://www.simplemachines.ru/index.php?topic=15444.0
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

GeorG

Цитата: Elaneor от 14 мая 2013, 22:51:57Техподдержка хостинга говорит, что дело в "движке",а в "движках они не секут".
Возьмите нормальный хостинг, там обычно дают время на тестирования. Залейте туда свой форум и БД (дел на час), убедитесь что там нет ошибок с кодировкой и съезжайте от них, они вам ещё долго голову могут компостировать, что проблемы с движком, а не у них (естественно, если вы уверены что все правильно сделали с кодировкой)...
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Elaneor

На данный момент, запрос
SHOW VARIABLES LIKE 'char%'

выдает следующий ответ
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/


Т.е, на сервере хостера действительно кодировка
character_set_server   cp1251

Может ли быть проблема в этом? Можно ли ее решить своими способами?
Как-то аргументировать хостеру, что мне нужна другая кодировка? (Правда, если они изначально поставили вопрос, то что-то мне кажется, что я не добьюсь ничего путного).

поможет ли здесь явная команда
set names utf-8
и где ее можно прописать?

digger®

Цитата: Elaneor от 15 мая 2013, 07:47:48(Правда, если они изначально поставили вопрос, то что-то мне кажется, что я не добьюсь ничего путного).
Если это произошло после каких-то работ хостера, то чем не аргумент?
Вот, недавно, тоже хостер послал клиента разбираться с "работой скрипта", а  в итоге выяснилось, что MySQL хостер у себя "поднастроил", что и вызвало все те проблемы  http://www.simplemachines.ru/index.php?topic=16086.0

Цитироватьпоможет ли здесь явная команда
set names utf-8
и где ее можно прописать?
$db_character_set = 'utf8' как раз это и включает.

У вас проблема с "И" и в старых и в новых сообщениях? В phpMyAdmin смотрели как она выглядит в базе?

И попробуйте что будет, если в Settings.php добавить
$db_character_set = 'cp1251';

Elaneor

#10
Проблема с буквой И (только с заглавной) возникает как в старых (отображаются пустыми), так и в новых сообщениях.

При этом старые темы, в заголовке которых буква И есть - отображаются в списке тем, но буква "И" также отображается "�?"

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

И текст старых сообщений с буквой "И" не отображается.

Я , с правами администратора, могу "изменить текст",  и текст внутри есть.

Уточните пожалуйста, как посмотреть это в phpMyAdmin?

В Settings.php
$db_character_set='cp1251';
На отображение не влияет.
Написала новый пост с И - пост отобразился пустым.
В теле поста
ЦитироватьБуква �?

Тему по ссылке прочитала. Кажется, что решения данной проблемы там нет.
Хотелось бы до радикального решения (смены хостера) подготовить им адекватное обращение - но я ведь тоже не знаю, что именно они могли " поднастроить"  :(

GeorG

Цитата: Elaneor от 15 мая 2013, 14:23:53В Settings.php
$db_character_set='cp1251';
Исправьте на:
$db_character_set = 'utf8';

Цитата: Elaneor от 15 мая 2013, 14:23:53
Уточните пожалуйста, как посмотреть это в phpMyAdmin?
Открываете phpMyAdmin и смотрите таблицу smf_messages (префикс smf_ может быть другим). В поле subject не должно быть крякозябликов, там же смотрите как выглядит проблемная буква.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Elaneor

#12
Как я уже пробовала по совету в данной ветке.
Добавление в Settings.php строки
$db_character_set = 'utf8';

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

В PhpMyAdmin в строках таблицы smf_messages
действительно в колонках subject и body хранятся нечитаемые загогулины вида:

Лекции Рѕ расС,енияС... РЅР° РїСЂРёСЂРѕ...

Зато если отредактировать старый пост .. или написать новый -
Буква И - отображается.

Как же привести настройки в рабочее состояние?
Пока оставила настройку utf в settings.php -
но народ точно испугается  ::)

Итого - с новыми постами (и даже новостями) с установленной utf8 в settings.php проблем нет.
Но что делать теперь с тем, что УЖЕ ЕСТЬ?
Выгрузить - обработать - загрузить?
А чем это можно сделать? сомневаюсь, что мой Notepad2 сожрет такой архив. хотя я не пробовала еще, если честно.


Elaneor