Ошибки кодировки bitrix

 

При тестировании системы выдаются ошибки

Кодировка соединения

Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb3

Кодировка базы данных

Замечание. Не удалось проверить из-за ошибки кодировки соединения

Кодировки таблиц в БД

Замечание. Не удалось проверить из-за ошибки кодировки соединения

В конфигах:

$DB->Query(«SET NAMES ‘utf8′»);
$DB->Query(‘SET collation_connection = «utf8_unicode_ci»‘);

и

$connection->queryExecute(«SET NAMES ‘utf8′»);
$connection->queryExecute(‘SET collation_connection = «utf8_unicode_ci»‘);

В журнале проверки системы:
2021-Jul-23 11:51:11 Кодировка соединения (check_mysql_connection_charset): Failcharacter_set_connection=utf8mb3, collation_connection=utf8_unicode_ci, character_set_results=utf8mb3
Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb3
2021-Jul-23 11:51:11 Кодировка базы данных (check_mysql_db_charset): Warning
Замечание. Не удалось проверить из-за ошибки кодировки соединения
2021-Jul-23 11:51:11 Кодировки таблиц в БД (check_mysql_table_charset): Warning
Замечание. Не удалось проверить из-за ошибки кодировки соединения

Версия:
mysql  Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64

Почему Битрикс ожидает utf8, разве она не устарела в пользу utf8mb3 и utf8mb4, равно как и utf8_unicode_ci?
Как исправить, подскажите, пожалуйста?

 

Просто для битрикса цифра 8 мистическая: php 8, mysql 8, utf 8. Везде какие-то проблемы  :D  

 

Пользователь 136059

Гуру

Сообщений: 5430
Баллов: 1074
Регистрация: 16.07.2012

#3

23.07.2021 17:30:44

Цитата
Алексей Бобков написал:
Почему Битрикс ожидает utf8, разве она не устарела в пользу utf8mb3 и utf8mb4, равно как и utf8_unicode_ci?

Потому что он ожидает именно utf8 без мультибайтов.

Голосуй за идеи по развитию API Bitrix:
https://idea.1c-bitrix.ru/26707/
https://idea.1c-bitrix.ru/26709/
https://idea.1c-bitrix.ru/the-local-extension-folder-js/

 

Не хочу никого оскорблять, но в очередной раз убеждаюсь в ущербности русскоязычных форумов.
Вместо конкретизированных ответов уже два сообщения и оба — флуд.
Полагаю, что такая проблема возникает из-за отсутствия карательных мер в отношении такого рода флудеров — нет возможности поставить минусы в карму флудера, вплоть до полной блокировки при критическом снижении кармы.

Почему на англоязычных ресурсах (

https://stackoverflow.com/

и иже с ними) пишут только конкретные ответы с решениями вопроса?! Да потому, что флуд полностью модерируется и уводится в бан модераторами и сообществом. А тут, судя по всему, ни модераторов активных, ни возможности заминусить ответ.

В очередной раз Я и мои коллеги убедились в том, что тут можно и не задавать вопросы — бессмысленно почти что.

 

Поднимаю вопрос. В Bitrix VM есть возможность апдейта MySQL до версии 8, откатить при этом как PHP нельзя. После апдейта ругается на utf8mb3. Насколько критична эта ошибка и как может сказаться на работе сайта? И как исправить. В системных требованиях Битрикс не указано, что MySQL 8 не поддерживается (по крайней мере не нашел).

В целом, зачем добавили в Bitrix VM возможность апдейта php и Mysql до 8 версии, если Битрикс их не поддерживает?

 

Пользователь 2505711

Заглянувший

Сообщений: 1
Регистрация: 20.09.2018

#6

07.09.2021 15:05:06

У меня не получилось завести Битрикс 24 на Mysql 8. Проблема была с методом $DB->CharToDateFunction($char), при выводе ленты задач лезла ошибка:

/bitrix/modules/tasks/classes/general/task.php Line: 5522 MySQL Query Error: SELECT TL.TASK_ID AS TASK_ID, COUNT(TL.TASK_ID) AS CNT FR OM b_tasks_log TL WHERE USER_ID != 1 AND ( (CREATED_DATE > » AND TASK_ID = 2263) ) GROUP BY TL.TASK_ID [[1525] Incorrect DATETIME value: »]

Проблемы в методе $DB->CharToDateFunction($char), В моем конкретном случае он возвращал вместо даты пустую строку. На сколько я понимаю внутри этот метод выглядит как-то  так:

Скрытый текст

 

В инетах пишут про это дело например здесь:

https://habr.com/ru/post/476852/#comment_20914160

Разбираться более подробно времени не было — откатил все взад из бэкапа и остался пока на MySql5.7

да еще добавлю что SQL_MODE=’ALLOW_INVALID_DATES’ мне не помогло  

 

Пользователь 5037586

Заглянувший

Сообщений: 1
Регистрация: 20.05.2021

#7

14.09.2021 16:16:59

А воз и ныне там.

Цитата
Husnutdinov написал:
При тестировании системы выдаются ошибки

Кодировка соединения

Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb3

Кодировка базы данных

Замечание. Не удалось проверить из-за ошибки кодировки соединения

Кодировки таблиц в БД

Замечание. Не удалось проверить из-за ошибки кодировки соединения

В конфигах:

$DB->Query(«SET NAMES ‘utf8′»);
$DB->Query(‘SET collation_connection = «utf8_unicode_ci»‘);

и

$connection->queryExecute(«SET NAMES ‘utf8′»);
$connection->queryExecute(‘SET collation_connection = «utf8_unicode_ci»‘);

В журнале проверки системы:
2021-Jul-23 11:51:11 Кодировка соединения (check_mysql_connection_charset): Failcharacter_set_connection=utf8mb3, collation_connection=utf8_unicode_ci, character_set_results=utf8mb3
Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb3
2021-Jul-23 11:51:11 Кодировка базы данных (check_mysql_db_charset): Warning
Замечание. Не удалось проверить из-за ошибки кодировки соединения
2021-Jul-23 11:51:11 Кодировки таблиц в БД (check_mysql_table_charset): Warning
Замечание. Не удалось проверить из-за ошибки кодировки соединения

Версия:
mysql  Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64

Почему Битрикс ожидает utf8, разве она не устарела в пользу utf8mb3 и utf8mb4, равно как и utf8_unicode_ci?
Как исправить, подскажите, пожалуйста?

Добрый день. Удалось решить проблему? Если удалось, то каким образом? У нас аналогичная.

 

Аналогичная проблема. Как вылечить ошибки кодировки бд?

 
 

Пользователь 584821

Заглянувший

Сообщений: 4
Баллов: 2
Регистрация: 13.05.2016

#10

22.10.2021 13:12:26

Здравствуйте!

Я думаю проблема просто в коде проверки системмы. Не думают, что можно в after_connect написать другую кодировку с которой надо сравнивать.
Файл: bitrix/modules/main/classes/general/site_checker.php
Код:

Код
if (defined('BX_UTF') && BX_UTF === true)                                                                                                                                                                                     
                {                                                                                                                                                                                                                             
                        if ($character_set_connection != 'utf8')                                                                                                                                                                              
                                $strError = GetMessage("SC_CONNECTION_CHARSET_WRONG", array('#VAL#' => 'utf8', '#VAL1#' => $character_set_connection));                                                                                       
                        elseif ($collation_connection != 'utf8_unicode_ci')                                                                                                                                                                   
                                $strError = GetMessage("SC_CONNECTION_COLLATION_WRONG_UTF", array('#VAL#' => $collation_connection));                                                                                                         
                }                             

Или могли regexp использовать.

 

Пользователь 15906

Постоянный посетитель

Сообщений: 170
Баллов: 32
Регистрация: 19.09.2007

#11

13.11.2021 02:02:36

Да, есть такая история, и к сожалению разработчики bx не особо стремятся к ее решению, точнее исправлению раздела «Проверка системы».

В целом, то что пишет СУС при проверке кодировки БД utf8mb4 (utf8mb3), ничего страшного нет, т.к. начиная с версии mySQL8, обозначение utf8 является устаревшим и не рекомендуется к использованию. Они начинают приучать всех писать не просто utf8, а с конкретным указанием байт, по умолчанию по прежнему используется 3-х байтовая.

MySQL :: MySQL 8.0 Reference Manual :: 10.9.3 The utf8 Character Set (Alias for utf8mb3)

Лично я, после каждого обновления просто правлю файл bitrix/modules/main/classes/general/site_checker.php чтобы данный момент не мозолил глаза в «Проверке системы», т.к. я уже более года живу в 4-х байтовой (utf8mb4). Правится в 3-х местах, строка 2111:

Код
if (defined('BX_UTF') && BX_UTF === true)
{
   if ($character_set_connection != 'utf8mb4')
      $strError = GetMessage("SC_CONNECTION_CHARSET_WRONG", array('#VAL#' => 'utf8', '#VAL1#' => $character_set_connection));
   elseif ($collation_connection != 'utf8mb4_unicode_ci')
      $strError = GetMessage("SC_CONNECTION_COLLATION_WRONG_UTF", array('#VAL#' => $collation_connection));
}
else
{
   if ($bAllIn1251 && $character_set_connection != 'cp1251')
      $strError = GetMessage("SC_CONNECTION_CHARSET_WRONG", array('#VAL#' => 'cp1251', '#VAL1#' => $character_set_connection));
   elseif ($character_set_connection == 'utf8mb4')
      $strError = GetMessage("SC_CONNECTION_CHARSET_WRONG_NOT_UTF", array('#VAL#' => $character_set_connection));
}

Понятное дело, не призываю к данному действу :) Что-то править в ядре — это зло…

 

Типичный русский софт — мы обновились до 8ки — ставь восьмёрку, только мы не обновили сайт чекер, а обращение от тебя не примим, так как есть ошибка в чекере сайта)))  

 

Как исправить ошибку? Перепробовал уже все варианты в инете со всеми вариациями, в тч менять чекер, менять в дбконне, менять в настройках sql?

Ошибка! Сравнение соединения с базой данных должно быть utf8_unicode_ci, текущее значение: utf8mb3_unicode_ci.. У меня походу из-за этого не делаются резервные копии, во время которых выкидывает как раз на ошибке sql

 

Добрый день! Проблема та же. В новой версии вообще нет файла after_connect. Кто победил эту проблему???

 

Пользователь 12233

Заглянувший

Сообщений: 23
Баллов: 2
Регистрация: 26.05.2007

#15

06.10.2022 19:40:02

Была проблема такая. Причём в after_connect всё было прописано…. Поставил все обновления — проблема ушла…
А то что у вас after_connect отсутствует — это не правильно. Создайте

Исправляем ошибки кодировки таблиц

21.10.2021

1793

В результате проверки системы, Битрикс указал, что есть ошибки в Базе данных, но иногда автоматически он не может всё исправить, и тут приходится исправлять своими ручками.

Нажимая на знак вопроса мы видим подсказку от Битрикса где сообщает, что кодировка текущих наших таблиц, должна совпадать с кодировкой базы данных.

Подробное описание ошибки

Если перейдем по ссылке на «журнал проверки системы», то увидим список тех таблиц, где не совпали кодировки, вот нам они и нужны, на скриншоте пометил стрелочками.

Журнал проверки системы

SQL запрос: 

ALTER TABLE b_iblock_property_feature CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Где b_iblock_property_feature — это название таблицы, у Вас могут быть другие.

Таким образом я выписал и составил список sql запросов для всех своих таблиц из журнала.

ALTER TABLE b_iblock_property_feature CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_block CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_demo CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_domain CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_file CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_hook_data CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_manifest CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_placement CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_repo CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_site CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_syspage CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_template CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_template_ref CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_main_mail_blacklist CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_main_mail_sender CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_messageservice_message CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_messageservice_rest_app CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_messageservice_rest_app_lang CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_mobileapp_app CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_mobileapp_config CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_numerator CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_numerator_sequence CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rating_voting_reaction CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_ap CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_ap_permission CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_app CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_app_lang CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_app_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_event CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_event_offline CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_placement CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_stat CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_stat_method CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_seo_service_subscription CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_user_profile_history CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_user_profile_record CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_utm_iblock_6_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_utm_iblock_8_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_uts_iblock_6_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_uts_iblock_8_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

После того как Вы собрали список SQL запросов, заходим в админку сайта битрикс (Настройки — Инструменты — SQL-запрос) или по пути, вставляете после адреса сайта /bitrix/admin/sql.php

SQL запросы

Возврат к списку

Проблемы с кодировкой на сайте часто встречаются после миграции с устаревшего серверного ПО (например, версии PHP) на новое.

Например, кодировка 1251 неактуальна для PHP старше версии 5.6. В связи с чем требуется изменение кодировки на UTF-8, которая является стандартом для последних версий PHP.

Если ваш сайт до миграции на наш хостинг работал в кодировке 1251, то при проверке системы вы можете видеть замечание: «Сайт работает в однобайтовой кодировке». Для исправления ситуации потребуется конвертировать сайт в UTF-8 или сделать изменения PHP-обработчика под кодировку 1251.

Следуйте шагам:

Исправьте настройки базы данных из панели 1С Битрикс в случае, если на странице /bitrix/admin/site_checker.php выводится ошибка: Ошибка! Кодировка базы (utf8) отличается от кодировки соединения (cp1251). [ Исправить ]

Если операция завершилась неуспешно, то повторно повторите исправление.

В редких случаях требуется ручное исправление из phpMyAdmin:

В панели хостинга в разделе «базы данных» перейдите в базу данных вашего сайта. После редиректа в phpMyAdmin войдите в раздел «операции» и в блоке «сравнение» выберите «utf-8_general_ci». Нажмите кнопку «вперед».

Редактирование php.ini для выбранной версии режиме PHP вашего сайта:

Убедитесь, что в настройках php.ini для выбранной версии PHP вашего сайта установлены значения:

Для варианта конвертации в utf-8:

mbstring.func_overload = 2
mbstring.internal_encoding = utf-8
default_charset = «utf-8»

Для варианта без конвертации (остается кодировка 1251):

mbstring.func_overload = 0
mbstring.internal_encoding = cp1251
default_charset = «cp1251»

Для однобайтовой кодировки (1251) также потребутеся отключить кодировку UTF-8 в панели хостинга в разделе «WWW-домены»:

Далее необходимо привести настройки согласно требуемой кодировке в файлах системы 1С Битрикс:

Для варианта корвертации в utf-8:

В /bitrix/php_interface/dbconn.php должно быть значение: define(‘BX_UTF’, true);

В /bitrix/.settings.php должно быть значение: ‘utf_mode’ => array (‘value’ => true, ‘readonly’ => true,),

Для варианта без конвертации (остается кодировка 1251):

В /bitrix/php_interface/dbconn.php полностью удалить значение: define(‘BX_UTF’, true);

В /bitrix/.settings.php должно быть значение: ‘utf_mode’ => array (‘value’ => false, ‘readonly’ => true,),

Некорректное отображение страниц из-за неправильной кодировки файла

ID статьи: 121
, создана 13 сен 2016 , последнее исправление  26 мар 2019

Актуально для:

  • Аспро: Маркет
  • Аспро: Крутой шоп
  • Аспро: Интернет-магазин
  • Аспро: Шины и диски, интернет-магазин
  • Аспро: Оптимус
  • Аспро: Корпоративный сайт современной компании
  • Аспро: Корпоративный сайт
  • Аспро: Корпорация
  • Аспро: Сайт медицинского центра
  • Аспро: Стройка
  • Аспро: Курорт

Сайт информирует о наличии ошибки в кодировке файла, которая отличается от кодировки остального сайта. Необходимо исправить кодировку для корректного отображения страниц.


Решение

Ваш файл, в котором находится вызов компонента, сохранен в неверной кодировке. Нужно исправить кодировку и повторно загрузить файл.

Внимание! Перед любыми правками в структуре сайта настоятельно рекомендуем сделать внеплановую резервную копию сайта. Правки в компоненты ядра системы вносите с особой внимательностью: ошибки могут привести к нестабильной работе сайта.

Инструкция ниже предназначена для веб-разработчиков и программистов. Если вы не обладаете нужными навыками, обратитесь в техническую поддержку Аспро.

Переключитесь на административную часть сайта и перейдите в Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → templates → aspro-stroy → components → bitrix → news → services. Найдите файл detail.php и через кнопку «гамбургер» войдите в режим «Редактирование как PHP».

  

Файл с неверной кодировкой будет казаться пустым. Вернитесь на шаг назад и в списке кнопки «гамбургер» выберите «Скачать файл».

Воспользуйтесь бесплатным приложением Notepad++, чтобы изменить кодировку. Установите приложение на свой компьютер и откройте в нем ваш файл. В меню «Кодировки» выберите пункт «Кодировка в UTF-8 (без BOM)». Сохраните файл.

Удалите старый файл. В списке кнопки «гамбургер» выберите пункт «Удалить».

Загрузите новый перекодированный файл. Нажмите кнопку «Загрузить файл» и выберите нужный.


09.11.2021

После установки Битрикса на новый сервер возникла проблема, при «самопроверке» CMS, сообщение:
Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb3

pic1

Сам Битрикс рекомендовал:

pic1

но в конфигурационных файлах все был прописано верно.

Проверка Битрикса выполняется через НастройкиИнструментыПроверка системы (/bitrix/admin/site_checker.php)

.

В итоге пришлось решать вопрос исправлением файла bitrix/modules/main/classes/general/site_checker.php, в блоке ниже, заменил
utf8 на utf8mb3 и
utf8_unicode_ci на utf8mb3_unicode_ci

 
if (defined('BX_UTF') && BX_UTF === true)
{
	if ($character_set_connection != 'utf8mb3')
		$strError = GetMessage("SC_CONNECTION_CHARSET_WRONG", array('#VAL#' => 'utf8', '#VAL1#' => $character_set_connection));
	elseif ($collation_connection != 'utf8mb3_unicode_ci')
		$strError = GetMessage("SC_CONNECTION_COLLATION_WRONG_UTF", array('#VAL#' => $collation_connection));
}

Ошибка! Сравнение для базы (utf8_general_ci) отличается от сравнения для соединения (utf8_unicode_ci)


Понравилась статья? Поделить с друзьями:
  • Ошибки коне лифтс
  • Ошибки кодирования это
  • Ошибки комацу 300 экскаватор
  • Ошибки кондиционера фуджи
  • Ошибки код ошибки 0x0000003b win 10