Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted

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

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

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

 

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

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

После

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

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

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

  • Author
После

 

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

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

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

Вся база в utf8_unicode_ci.

Edited by Korben

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

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

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

  • Author

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

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

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

  • Author

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

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

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

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

 

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

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

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

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

Guest
This topic is now closed to further replies.

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

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.