Jump to content

Ž вместо ю и ž вместо о

Featured Replies

Posted
comment_18788

Вчера обновил форум с 2.3.6 на 3.4.1, разумеется попутно сконвертировав базу данных известным в местных кругах скриптом.
Всё прошло гладко, но по каким-то неведомым мне причинам, форум начал заменять в новых сообщениях,и в других местах русские буквы ю и О на Ž и ž соответственно. Весь остальной текст - нормальный, именно эти две буквы. Откуда они могли появиться и почему я никак не могу понять.

Буду очень признателен за помощь в исправлении этой дурацкой ошибки.
Спасибо.

comment_18796

В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее.

  • Author
comment_18798
В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее.

 

Она была в режиме "Нет", я перевёл в режим "Да", но это не помогло. Попробовал пересохранить текст правил - он всё равно сохранился с заменой двух букв.

Может кеш какой перестроить надо?

comment_18804

После

В поиске в АЦ введите 0xCA там будет одна настройка — отключите ее.

при создании новых сообщений получается тоже самое?

В базе все кодировки в utf8?

  • Author
comment_18806
После

 

при создании новых сообщений получается тоже самое?

В базе все кодировки в utf8?

Да, всё также.

Вся база в utf8_unicode_ci.

Edited by Korben

comment_18809

Поддержка --> Управление SQL --> Значения системных настроек

Все значения в utf8 ?

  • Author
comment_18811
Поддержка --> Управление SQL --> Значения системных настроек

Все значения в utf8 ?

Были все, кроме двух: collation_server и character_set_server. Изменил их через my.cnf (проверил в том же разделе), но эффекта не дало.

comment_18818

Даже не знаю что в таком случае посоветовать.. Нужно самому смотреть базу и сам форум, может чего неладное найдётся..

  • Author
comment_18824

В общем вот что мне удалось выяснить.

С помощью FireBug'а узнал, что POST отсылает нормальные символы, значит конвертация происходит уже на стороне сервера. В запись БД эти два символа попадают в виде "& #381" и "& #382" (без пробелов между # и &, разумеется).

Теперь осталось узнать, почему конвертация происходит неверно в случае двух этих символов. Очевидно, где-то в коде происходит конвертация с помощью либо iconv, либо чего-то подобного.
Может кто знает, в каком месте кода искать функцию конвертирования?

comment_18829

Я советую переустановить форум с импортом нужных таблиц. Статья в Базе знаний у нас имеется.

  • Author
comment_18830

Вы будете смеяться...

Пришлось в режиме дебага, вставляя по очереди перед каждой строчкой каждого класса проставить var_dump (); и die ();, чтобы обнаружить, что вся конвертация происходит в зависимости от проверки переменной функцией:

if ( IPS_IS_UTF8 !== true )
		{
			$content = $this->_cakeAndEatIt( $content );
		}

Ну и соответственно понять, что дело в параметре "Document character set" в настройках системы, раздел Server Environment.

 

У меня он был "utf8". Стоило мне поменять его на "utf-8", всё заработало.

Разумеется, мой косяк, что не проэкспериментировал с этим, но... По-моему можно было предсказать вероятность ввода utf8 вместо utf8.

В общем, дело в одном дефисе. Вот так-то.

comment_18831

Когда обновлял форум одного из клиентов с 2.3.6, была подобная проблема из за этого дефиса, только проблема была глобальнее - весь текст был крякозябрами :) 

Guest
This topic is now closed to further replies.

Последние посетители 0

  • No registered users viewing this page.