Korben Posted January 15, 2013 Report Share Posted January 15, 2013 Вчера обновил форум с 2.3.6 на 3.4.1, разумеется попутно сконвертировав базу данных известным в местных кругах скриптом. Всё прошло гладко, но по каким-то неведомым мне причинам, форум начал заменять в новых сообщениях,и в других местах русские буквы ю и О на Ž и ž соответственно. Весь остальной текст - нормальный, именно эти две буквы. Откуда они могли появиться и почему я никак не могу понять. Буду очень признателен за помощь в исправлении этой дурацкой ошибки. Спасибо. Link to comment Share on other sites More sharing options...
_Dark_ Posted January 15, 2013 Report Share Posted January 15, 2013 В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее. Link to comment Share on other sites More sharing options...
Korben Posted January 15, 2013 Author Report Share Posted January 15, 2013 В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее. Она была в режиме "Нет", я перевёл в режим "Да", но это не помогло. Попробовал пересохранить текст правил - он всё равно сохранился с заменой двух букв. Может кеш какой перестроить надо? Link to comment Share on other sites More sharing options...
Respected Posted January 15, 2013 Report Share Posted January 15, 2013 После В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее. при создании новых сообщений получается тоже самое? В базе все кодировки в utf8? Link to comment Share on other sites More sharing options...
Korben Posted January 15, 2013 Author Report Share Posted January 15, 2013 (edited) После при создании новых сообщений получается тоже самое? В базе все кодировки в utf8? Да, всё также. Вся база в utf8_unicode_ci. Edited January 15, 2013 by Korben Link to comment Share on other sites More sharing options...
Respected Posted January 15, 2013 Report Share Posted January 15, 2013 Поддержка --> Управление SQL --> Значения системных настроек Все значения в utf8 ? Link to comment Share on other sites More sharing options...
Korben Posted January 15, 2013 Author Report Share Posted January 15, 2013 Поддержка --> Управление SQL --> Значения системных настроек Все значения в utf8 ? Были все, кроме двух: collation_server и character_set_server. Изменил их через my.cnf (проверил в том же разделе), но эффекта не дало. Link to comment Share on other sites More sharing options...
Respected Posted January 15, 2013 Report Share Posted January 15, 2013 Даже не знаю что в таком случае посоветовать.. Нужно самому смотреть базу и сам форум, может чего неладное найдётся.. Link to comment Share on other sites More sharing options...
Korben Posted January 16, 2013 Author Report Share Posted January 16, 2013 В общем вот что мне удалось выяснить. С помощью FireBug'а узнал, что POST отсылает нормальные символы, значит конвертация происходит уже на стороне сервера. В запись БД эти два символа попадают в виде "& #381" и "& #382" (без пробелов между # и &, разумеется). Теперь осталось узнать, почему конвертация происходит неверно в случае двух этих символов. Очевидно, где-то в коде происходит конвертация с помощью либо iconv, либо чего-то подобного. Может кто знает, в каком месте кода искать функцию конвертирования? Link to comment Share on other sites More sharing options...
Respected Posted January 16, 2013 Report Share Posted January 16, 2013 Я советую переустановить форум с импортом нужных таблиц. Статья в Базе знаний у нас имеется. Link to comment Share on other sites More sharing options...
Korben Posted January 16, 2013 Author Report Share Posted January 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 Link to comment Share on other sites More sharing options...
Respected Posted January 16, 2013 Report Share Posted January 16, 2013 Когда обновлял форум одного из клиентов с 2.3.6, была подобная проблема из за этого дефиса, только проблема была глобальнее - весь текст был крякозябрами Link to comment Share on other sites More sharing options...
Recommended Posts