Korben Опубликовано 15 января, 2013 Поделиться Опубликовано 15 января, 2013 Вчера обновил форум с 2.3.6 на 3.4.1, разумеется попутно сконвертировав базу данных известным в местных кругах скриптом. Всё прошло гладко, но по каким-то неведомым мне причинам, форум начал заменять в новых сообщениях,и в других местах русские буквы ю и О на Ž и ž соответственно. Весь остальной текст - нормальный, именно эти две буквы. Откуда они могли появиться и почему я никак не могу понять. Буду очень признателен за помощь в исправлении этой дурацкой ошибки. Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
_Dark_ Опубликовано 15 января, 2013 Поделиться Опубликовано 15 января, 2013 В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее. Ссылка на комментарий Поделиться на другие сайты Поделиться
Korben Опубликовано 15 января, 2013 Автор Поделиться Опубликовано 15 января, 2013 В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее. Она была в режиме "Нет", я перевёл в режим "Да", но это не помогло. Попробовал пересохранить текст правил - он всё равно сохранился с заменой двух букв. Может кеш какой перестроить надо? Ссылка на комментарий Поделиться на другие сайты Поделиться
Respected Опубликовано 15 января, 2013 Поделиться Опубликовано 15 января, 2013 После В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее. при создании новых сообщений получается тоже самое? В базе все кодировки в utf8? Ссылка на комментарий Поделиться на другие сайты Поделиться
Korben Опубликовано 15 января, 2013 Автор Поделиться Опубликовано 15 января, 2013 (изменено) После при создании новых сообщений получается тоже самое? В базе все кодировки в utf8? Да, всё также. Вся база в utf8_unicode_ci. Изменено 15 января, 2013 пользователем Korben Ссылка на комментарий Поделиться на другие сайты Поделиться
Respected Опубликовано 15 января, 2013 Поделиться Опубликовано 15 января, 2013 Поддержка --> Управление SQL --> Значения системных настроек Все значения в utf8 ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Korben Опубликовано 15 января, 2013 Автор Поделиться Опубликовано 15 января, 2013 Поддержка --> Управление SQL --> Значения системных настроек Все значения в utf8 ? Были все, кроме двух: collation_server и character_set_server. Изменил их через my.cnf (проверил в том же разделе), но эффекта не дало. Ссылка на комментарий Поделиться на другие сайты Поделиться
Respected Опубликовано 15 января, 2013 Поделиться Опубликовано 15 января, 2013 Даже не знаю что в таком случае посоветовать.. Нужно самому смотреть базу и сам форум, может чего неладное найдётся.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Korben Опубликовано 16 января, 2013 Автор Поделиться Опубликовано 16 января, 2013 В общем вот что мне удалось выяснить. С помощью FireBug'а узнал, что POST отсылает нормальные символы, значит конвертация происходит уже на стороне сервера. В запись БД эти два символа попадают в виде "& #381" и "& #382" (без пробелов между # и &, разумеется). Теперь осталось узнать, почему конвертация происходит неверно в случае двух этих символов. Очевидно, где-то в коде происходит конвертация с помощью либо iconv, либо чего-то подобного. Может кто знает, в каком месте кода искать функцию конвертирования? Ссылка на комментарий Поделиться на другие сайты Поделиться
Respected Опубликовано 16 января, 2013 Поделиться Опубликовано 16 января, 2013 Я советую переустановить форум с импортом нужных таблиц. Статья в Базе знаний у нас имеется. Ссылка на комментарий Поделиться на другие сайты Поделиться
Korben Опубликовано 16 января, 2013 Автор Поделиться Опубликовано 16 января, 2013 Вы будете смеяться... Пришлось в режиме дебага, вставляя по очереди перед каждой строчкой каждого класса проставить var_dump (); и die ();, чтобы обнаружить, что вся конвертация происходит в зависимости от проверки переменной функцией: if ( IPS_IS_UTF8 !== true ) { $content = $this->_cakeAndEatIt( $content ); } Ну и соответственно понять, что дело в параметре "Document character set" в настройках системы, раздел Server Environment. У меня он был "utf8". Стоило мне поменять его на "utf-8", всё заработало. Разумеется, мой косяк, что не проэкспериментировал с этим, но... По-моему можно было предсказать вероятность ввода utf8 вместо utf8. В общем, дело в одном дефисе. Вот так-то. Respected 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Respected Опубликовано 16 января, 2013 Поделиться Опубликовано 16 января, 2013 Когда обновлял форум одного из клиентов с 2.3.6, была подобная проблема из за этого дефиса, только проблема была глобальнее - весь текст был крякозябрами Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения