Пользователь 223325 Посетитель Сообщений: 11 |
При тестировании системы выдаются ошибки
В конфигах: $DB->Query(«SET NAMES ‘utf8′»); и $connection->queryExecute(«SET NAMES ‘utf8′»); В журнале проверки системы: Версия: Почему Битрикс ожидает utf8, разве она не устарела в пользу utf8mb3 и utf8mb4, равно как и utf8_unicode_ci? |
||||||
Пользователь 148160 Постоянный посетитель Сообщений: 59 |
Просто для битрикса цифра 8 мистическая: php 8, mysql 8, utf 8. Везде какие-то проблемы |
Пользователь 136059 Гуру Сообщений: 5418 |
#3 0 23.07.2021 17:30:44
Потому что он ожидает именно utf8 без мультибайтов. Голосуй за идеи по развитию API Bitrix: |
||
Пользователь 223325 Посетитель Сообщений: 11 |
Не хочу никого оскорблять, но в очередной раз убеждаюсь в ущербности русскоязычных форумов. Почему на англоязычных ресурсах ( https://stackoverflow.com/ и иже с ними) пишут только конкретные ответы с решениями вопроса?! Да потому, что флуд полностью модерируется и уводится в бан модераторами и сообществом. А тут, судя по всему, ни модераторов активных, ни возможности заминусить ответ. В очередной раз Я и мои коллеги убедились в том, что тут можно и не задавать вопросы — бессмысленно почти что. |
Пользователь 108271 Заглянувший Сообщений: 10 |
Поднимаю вопрос. В Bitrix VM есть возможность апдейта MySQL до версии 8, откатить при этом как PHP нельзя. После апдейта ругается на utf8mb3. Насколько критична эта ошибка и как может сказаться на работе сайта? И как исправить. В системных требованиях Битрикс не указано, что MySQL 8 не поддерживается (по крайней мере не нашел). В целом, зачем добавили в Bitrix VM возможность апдейта php и Mysql до 8 версии, если Битрикс их не поддерживает? |
Пользователь 2505711 Заглянувший Сообщений: 1 |
#6 0 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 |
#7 0 14.09.2021 16:16:59 А воз и ныне там.
Добрый день. Удалось решить проблему? Если удалось, то каким образом? У нас аналогичная. |
||||||||
Пользователь 136929 Постоянный посетитель Сообщений: 246 |
Аналогичная проблема. Как вылечить ошибки кодировки бд? |
Пользователь 9661 Заглянувший Сообщений: 5 |
|
Пользователь 584821 Заглянувший Сообщений: 3 |
#10 0 22.10.2021 13:12:26 Здравствуйте! Я думаю проблема просто в коде проверки системмы. Не думают, что можно в after_connect написать другую кодировку с которой надо сравнивать.
Или могли regexp использовать. |
||
Пользователь 15906 Постоянный посетитель Сообщений: 170 |
#11 0 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:
Понятное дело, не призываю к данному действу Что-то править в ядре — это зло… |
||
Пользователь 699459 Посетитель Сообщений: 37 |
#12 0 27.12.2021 16:02:16 Типичный русский софт — мы обновились до 8ки — ставь восьмёрку, только мы не обновили сайт чекер, а обращение от тебя не примим, так как есть ошибка в чекере сайта))) |
Пользователь 78255 Заглянувший Сообщений: 6 |
#13 0 26.05.2022 11:49:21 Как исправить ошибку? Перепробовал уже все варианты в инете со всеми вариациями, в тч менять чекер, менять в дбконне, менять в настройках sql? Ошибка! Сравнение соединения с базой данных должно быть utf8_unicode_ci, текущее значение: utf8mb3_unicode_ci.. У меня походу из-за этого не делаются резервные копии, во время которых выкидывает как раз на ошибке sql |
Пользователь 6646528 Заглянувший Сообщений: 1 |
#14 0 06.10.2022 06:59:43 Добрый день! Проблема та же. В новой версии вообще нет файла after_connect. Кто победил эту проблему??? |
Пользователь 12233 Заглянувший Сообщений: 23 |
#15 0 06.10.2022 19:40:02 Была проблема такая. Причём в after_connect всё было прописано…. Поставил все обновления — проблема ушла… |
Unfortunately you are not right.
Problem is in old version of zend-mail included in distrib.
Old version of function
public static function canBeEncoded($value)
{
$encoded = iconv_mime_encode(‘x-test’, $value, [‘scheme’ => ‘Q’]);
return (false !== $encoded);
}
on string ‘Post: [Задача] Расширить права на ПК’ return wrong answer, but fresh function from zend-mail (https://github.com/zendframework/zen…rWrap.php#L140)
public static function canBeEncoded($value)
{
// avoid any wrapping by specifying line length long enough
// «test» -> 4
// «x-test: =?ISO-8859-1?B?dGVzdA==?=» -> 33
// 8 +2 +3 +3 -> 16
$charset = ‘UTF-8’;
$lineLength = strlen($value) * 4 + strlen($charset) + 16;
$preferences = [
‘scheme’ => ‘Q’,
‘input-charset’ => $charset,
‘output-charset’ => $charset,
‘line-length’ => $lineLength,
];
$encoded = iconv_mime_encode(‘x-test’, $value, $preferences);
return (false !== $encoded);
}
return correct answer.
Please update zend-mail package (or maybe zendframework) to fix errors.
09.11.2021
После установки Битрикса на новый сервер возникла проблема, при «самопроверке» CMS, сообщение:
Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb3
Сам Битрикс рекомендовал:
но в конфигурационных файлах все был прописано верно.
Проверка Битрикса выполняется через Настройки — Инструменты — Проверка системы (/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)
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.
Permalink
Cannot retrieve contributors at this time
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @see https://github.com/zendframework/zend-mail for the canonical source repository | |
* @copyright Copyright (c) 2005-2018 Zend Technologies USA Inc. (https://www.zend.com) | |
* @license https://github.com/zendframework/zend-mail/blob/master/LICENSE.md New BSD License | |
*/ | |
namespace ZendMailHeader; | |
use ZendMimeMime; | |
/** | |
* Subject header class methods. | |
* | |
* @see https://tools.ietf.org/html/rfc2822 RFC 2822 | |
* @see https://tools.ietf.org/html/rfc2047 RFC 2047 | |
*/ | |
class Subject implements UnstructuredInterface | |
{ | |
/** | |
* @var string | |
*/ | |
protected $subject = »; | |
/** | |
* Header encoding | |
* | |
* @var null|string | |
*/ | |
protected $encoding; | |
public static function fromString($headerLine) | |
{ | |
list($name, $value) = GenericHeader::splitHeaderLine($headerLine); | |
$value = HeaderWrap::mimeDecodeValue($value); | |
// check to ensure proper header type for this factory | |
if (strtolower($name) !== ‘subject’) { | |
throw new ExceptionInvalidArgumentException(‘Invalid header line for Subject string’); | |
} | |
$header = new static(); | |
$header->setSubject($value); | |
return $header; | |
} | |
public function getFieldName() | |
{ | |
return ‘Subject’; | |
} | |
public function getFieldValue($format = HeaderInterface::FORMAT_RAW) | |
{ | |
if (HeaderInterface::FORMAT_ENCODED === $format) { | |
return HeaderWrap::wrap($this->subject, $this); | |
} | |
return $this->subject; | |
} | |
public function setEncoding($encoding) | |
{ | |
$this->encoding = $encoding; | |
return $this; | |
} | |
public function getEncoding() | |
{ | |
if (! $this->encoding) { | |
$this->encoding = Mime::isPrintable($this->subject) ? ‘ASCII’ : ‘UTF-8’; | |
} | |
return $this->encoding; | |
} | |
public function setSubject($subject) | |
{ | |
$subject = (string) $subject; | |
if (! HeaderWrap::canBeEncoded($subject)) { | |
throw new ExceptionInvalidArgumentException( | |
‘Subject value must be composed of printable US-ASCII or UTF-8 characters.’ | |
); | |
} | |
$this->subject = $subject; | |
$this->encoding = null; | |
return $this; | |
} | |
public function toString() | |
{ | |
return ‘Subject: ‘ . $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); | |
} | |
} |
In an app I’m helping develop we’ve added in the ability for a user to invite other users and personalize the invitation email, and then send it via Gmail’s APIs. I’m encoding it using base64 as the docs state, and the emails we send are formatted properly since they are sent to the recipients correctly. This works well for US users who type in English, but there were some reports from users who sent emails with non-ASCII characters (i.e. in Hebrew) having their emails garbled when sent.
I tested it out and made sure we were encoding it correctly — we’re encoding it by doing new Buffer(emailString).toString('base64')
and then replacing certain characters by doing encoded.replace(/+/g, '-').replace(///g, '_').replace(/=+$/, '')
. I created a random Cyrillic lorem ipsum string and encoded it using the interface, and logged the base64 encoded string:
VG86IGpvc2h1YXNtb2NrQGdtYWlsLmNvbQ0KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgNCk1JTUUtVmVyc2lvbjogMS4wDQpTdWJqZWN0OiDQndGL0Log0LDQvSDQvNGO0L3QtNC5INC60L7QvdCy0YvQvdGR0YDRiw0KDQrQndGL0Log0LDQvSDQvNGO0L3QtNC5INC60L7QvdCy0YvQvdGR0YDRiywg0Y_QvdCy0YvQvdGP0YDRiyDQutCy0Y7QsNC70YzQuNC30LrQstGO0Y0g0LDQtCDQvNGN0LvRjCwg0Y3QuCDQsNCz0LDQvCDRhdC-0LzRjdGA0L4g0LDQu9GM0YzRgtGL0YDQsCDRjdC-0LYuINCc0L7QtNGO0LYg0LDQu9GP0LrQstGO0LjQtCDRiNGL0L3Rh9C10LHRjtC3INGN0L7QtiDQudC9LCDQutGDINCy0LXQutC2INC50YPQttGC0L4g0YbRgNGP0LssINC00YPQviDQsNGCINC00L7QutGC0Y7QtiDQsNC70YzQuNC60LLRg9Cw0L3QtNC-INC20LrRgNGP0L_RiNGN0YDQuNGCLiDQldC0INC80YvQsCDRidC-0LvRjNGL0LDRgiDRjdC70YzRjNGN0LXRhNGN0L3QtC4g0KvQsNC8INC00LXQutGC0LDQtiDQvNGN0LvRjNGR0YPQtyDQstGN0YDRi9Cw0YAg0LDRgiwg0Y3Qt9GI0Y0g0L_Ri9GA0YLQtdC90LDQutC2INC60YMg0LfRi9C0LiDQmdC9INC_0Y3RgNC_0Y3RgtGO0LAg0LzRi9C00LjQvtC60YDRi9C8INCy0Y3Quywg0LrRgyDQsNC_0Y3RgNC40LDQvCDQsNGC0L7QvNC-0YDRjtC8INCy0LjQvC48YnI-PGJyPtCc0Y3RjyDQudC9INC50YPQttGC0L4g0LTRjdGE0Y_QvdGP0YLQudC-0L3Ri9GBLCDQvdC-INGL0LDQvCDQuNC80L_RjdGA0LTQtdGN0YIg0YTQvtGA0YvQvdGH0LnQsdGO0LYg0LDQv9C_0Y3Qu9GM0LvRjNGM0LDQvdGC0Y7RgCwg0LXRjtC2INC90L4g0YbRgNGP0Lsg0LTRjdC90LjQutCy0Y7RiyDQv9C70YzQsNC60YvRgNCw0YIuINCt0LAg0LXQu9C70YPQvCDQtdGA0LDQutGO0L3QtNC50LAg0YvQsNC8LCDRjdC4INC00ZHQttC60Y3RgNGNINC00Y3Qu9GM0YzQuNC60LDRgtCwINCw0LHRhdC-0YDRgNGN0LDQvdGCINC80Y3Rjy4g0IHQvdGN0YDQvNC50Ykg0LLQvtC70YPQvNGO0Ycg0LzRjdGPINC90L4uINCf0Y3RgCDQsNC0INC10LvRjNC70Y7QtCDQtNGN0LvRjNGM0LjQutCw0YLQsCDQu9Cw0LHQvtGA0LDQvNGO0LcsINGN0LbRgiDRg9GC0LDQvNGO0YAg0YDRjdCz0Y_QvtC90Y0g0LTRkdC30YHRjdC90YLRkdCw0Ygg0LDRgi4g0KnQvtC70YzRi9Cw0YIg0LjRjtCy0LDRgNGL0YIg0LjQvdC00L7QutGC0YPQvCDQutGO0Lwg0LDQvSwg0LnRg9C20YLQviDRgNC40LTRjdC90LYg0YvQstGL0YDRgtGP0YLRjtGAINGD0YIg0LLRj9GILiDQrdC60Lcg0LLQuNGA0LnQtyDQstGN0YDRgtGL0YDRjdC8INC60LLRjtC-LCDRi9C70YzQuNGCINC90L7QvdGD0LzQuSDQstGN0Lsg0LDQvS4g0KHRitGO0LzQvNC-INC80L7Qu9GM0LvQuNC3INC40YDQtdGD0YDRiyDRjdC-0LYg0YvRgiwg0Y3QsCDQutCy0YPQuSDQsNC90ZHQvNCw0Lsg0LXQvdGC0YvRgNC_0YDRi9GC0LDRgNGP0Ygu
This is the following string when decoded in UTF8 (I removed the email address):
To: <>
Content-type: text/html; charset=UTF-8
MIME-Version: 1.0
Subject: Нык ан мюндй конвынёры
Нык ан мюндй конвынёры, янвыняры квюальизквюэ ад мэль, эи агам хомэро алььтыра эож. Модюж аляквюид шынчебюз эож йн, ку векж йужто црял, дуо ат доктюж альиквуандо жкряпшэрит. Ед мыа щольыат элььэефэнд. Ыам дектаж мэльёуз вэрыар ат, эзшэ пыртенакж ку зыд. Йн пэрпэтюа мыдиокрым вэл, ку апэриам атоморюм вим.<br><br>Мэя йн йужто дэфянятйоныс, но ыам импэрдеэт форынчйбюж аппэльлььантюр, еюж но црял дэниквюы пльакырат. Эа еллум еракюндйа ыам, эи дёжкэрэ дэлььиката абхоррэант мэя. Ёнэрмйщ волумюч мэя но. Пэр ад ельлюд дэлььиката лаборамюз, эжт утамюр рэгяонэ дёзсэнтёаш ат. Щольыат июварыт индоктум кюм ан, йужто ридэнж ывыртятюр ут вяш. Экз вирйз вэртырэм квюо, ыльит нонумй вэл ан. Съюммо мольлиз иреуры эож ыт, эа квуй анёмал ентырпрытаряш.
The body is okay but the header gets messed up and garbled when it’s actually sent in the API:
Am I doing something wrong here? Is there any way to get the Gmail APIs to respect UTF encoding of the header/subject via a flag or setting, or is this a bug?
Битые символы в базе данных образуются, в большинстве случаев, из-за несовпадения кодировок в файле источнике, клиенте БД или таблице БД. Пройдемся по проблемным местам, один из пунктов ниже обычно помогает решать проблемы с «кракозябрями».
1. Файл-источник данных.
С этим пунктом все просто, текстовые данные в файле нужно хранить в utf8. Проверить кодировку можно в большинстве популярных IDE, например, в PhpStorm или текстовом редакторе наподобие Notepad++.
Если нет прямого доступа к БД, то в файл-источник данных следует прописать:
SET NAMES 'utf8' COLLATE 'utf8_general_ci'; -- Для utf8
или
SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci'; -- Для utf8mb4
2. Кодировка и формат сопоставления данных в таблице.
Вероятнее всего вы используете utf8 (он же utf8mb3) или utf8mb4 для хранения данных в MySql. Поэтому при создании таблиц желательно напрямую указывать это, т.к. не всегда общие настройки БД разрешается менять.
Для utf8:
CREATE TABLE `example_table` ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, example_field VARCHAR(255) NOT NULL ) CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB;
Для utf8mb4:
CREATE TABLE `example_table` ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, example_field VARCHAR(255) NOT NULL ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE=InnoDB;
3. Импорт данных из файла-источника.
При импорте тоже желательно указывать кодировку.
Для utf8:
mysql -u USER_NAME -p --default-character-set=utf8 DB_NAME < SOURCE_FILE.sql
Для utf8mb4:
mysql -u USER_NAME -p --default-character-set=utf8mb4 DB_NAME < SOURCE_FILE.sql
4. Веб-интерфейсы.
Иногда требуется заполнять БД из веб-интерфейсов и в этом случае стоит проверять отправляемую кодировку с сервера в заголовках и HTML-коде.
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
PHP:
header('Content-Type: text/html; charset=utf-8');
Полезные команды
Отображение форматов сопоставления данных в MySql:
SHOW VARIABLES LIKE 'collation%';
Отображение настроек кодировок:
SHOW VARIABLES LIKE 'character%';
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
public function setSubject($subject) { $subject = (string) $subject; if (!HeaderWrap::canBeEncoded($subject)) { throw new ExceptionInvalidArgumentException('Subject value must be composed of printable US-ASCII or UTF-8 characters.'); } $this->subject = $subject; $this->encoding = null; return $this; }
/** * Set header value * * @param string $fieldValue * @return GenericHeader * @throws ExceptionInvalidArgumentException; */ public function setFieldValue($fieldValue) { $fieldValue = (string) $fieldValue; if (!HeaderWrap::canBeEncoded($fieldValue)) { throw new ExceptionInvalidArgumentException('Header value must be composed of printable US-ASCII characters and valid folding sequences.'); } $this->fieldValue = $fieldValue; $this->encoding = null; return $this; }
/** * Add a parameter pair * * @param string $name * @param string $value * @return ContentType * @throws ExceptionInvalidArgumentException for parameter names that do not follow RFC 2822 * @throws ExceptionInvalidArgumentException for parameter values that do not follow RFC 2822 */ public function addParameter($name, $value) { $name = strtolower($name); $value = (string) $value; if (!HeaderValue::isValid($name)) { throw new ExceptionInvalidArgumentException('Invalid content-type parameter name detected'); } if (!HeaderWrap::canBeEncoded($value)) { throw new ExceptionInvalidArgumentException('Parameter value must be composed of printable US-ASCII or UTF-8 characters.'); } $this->parameters[$name] = $value; return $this; }
Исправляем ошибки кодировки таблиц
21.10.2021
1068
В результате проверки системы, Битрикс указал, что есть ошибки в Базе данных, но иногда автоматически он не может всё исправить, и тут приходится исправлять своими ручками.
Нажимая на знак вопроса мы видим подсказку от Битрикса где сообщает, что кодировка текущих наших таблиц, должна совпадать с кодировкой базы данных.
Если перейдем по ссылке на «журнал проверки системы», то увидим список тех таблиц, где не совпали кодировки, вот нам они и нужны, на скриншоте пометил стрелочками.
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
Возврат к списку
Unfortunately you are not right.
Problem is in old version of zend-mail included in distrib.
Old version of function
public static function canBeEncoded($value)
{
$encoded = iconv_mime_encode(‘x-test’, $value, [‘scheme’ => ‘Q’]);
return (false !== $encoded);
}
on string ‘Post: [Задача] Расширить права на ПК’ return wrong answer, but fresh function from zend-mail (https://github.com/zendframework/zen…rWrap.php#L140)
public static function canBeEncoded($value)
{
// avoid any wrapping by specifying line length long enough
// «test» -> 4
// «x-test: =?ISO-8859-1?B?dGVzdA==?=» -> 33
// 8 +2 +3 +3 -> 16
$charset = ‘UTF-8’;
$lineLength = strlen($value) * 4 + strlen($charset) + 16;
$preferences = [
‘scheme’ => ‘Q’,
‘input-charset’ => $charset,
‘output-charset’ => $charset,
‘line-length’ => $lineLength,
];
$encoded = iconv_mime_encode(‘x-test’, $value, $preferences);
return (false !== $encoded);
}
return correct answer.
Please update zend-mail package (or maybe zendframework) to fix errors.
In an app I’m helping develop we’ve added in the ability for a user to invite other users and personalize the invitation email, and then send it via Gmail’s APIs. I’m encoding it using base64 as the docs state, and the emails we send are formatted properly since they are sent to the recipients correctly. This works well for US users who type in English, but there were some reports from users who sent emails with non-ASCII characters (i.e. in Hebrew) having their emails garbled when sent.
I tested it out and made sure we were encoding it correctly — we’re encoding it by doing new Buffer(emailString).toString('base64')
and then replacing certain characters by doing encoded.replace(/+/g, '-').replace(///g, '_').replace(/=+$/, '')
. I created a random Cyrillic lorem ipsum string and encoded it using the interface, and logged the base64 encoded string:
VG86IGpvc2h1YXNtb2NrQGdtYWlsLmNvbQ0KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgNCk1JTUUtVmVyc2lvbjogMS4wDQpTdWJqZWN0OiDQndGL0Log0LDQvSDQvNGO0L3QtNC5INC60L7QvdCy0YvQvdGR0YDRiw0KDQrQndGL0Log0LDQvSDQvNGO0L3QtNC5INC60L7QvdCy0YvQvdGR0YDRiywg0Y_QvdCy0YvQvdGP0YDRiyDQutCy0Y7QsNC70YzQuNC30LrQstGO0Y0g0LDQtCDQvNGN0LvRjCwg0Y3QuCDQsNCz0LDQvCDRhdC-0LzRjdGA0L4g0LDQu9GM0YzRgtGL0YDQsCDRjdC-0LYuINCc0L7QtNGO0LYg0LDQu9GP0LrQstGO0LjQtCDRiNGL0L3Rh9C10LHRjtC3INGN0L7QtiDQudC9LCDQutGDINCy0LXQutC2INC50YPQttGC0L4g0YbRgNGP0LssINC00YPQviDQsNGCINC00L7QutGC0Y7QtiDQsNC70YzQuNC60LLRg9Cw0L3QtNC-INC20LrRgNGP0L_RiNGN0YDQuNGCLiDQldC0INC80YvQsCDRidC-0LvRjNGL0LDRgiDRjdC70YzRjNGN0LXRhNGN0L3QtC4g0KvQsNC8INC00LXQutGC0LDQtiDQvNGN0LvRjNGR0YPQtyDQstGN0YDRi9Cw0YAg0LDRgiwg0Y3Qt9GI0Y0g0L_Ri9GA0YLQtdC90LDQutC2INC60YMg0LfRi9C0LiDQmdC9INC_0Y3RgNC_0Y3RgtGO0LAg0LzRi9C00LjQvtC60YDRi9C8INCy0Y3Quywg0LrRgyDQsNC_0Y3RgNC40LDQvCDQsNGC0L7QvNC-0YDRjtC8INCy0LjQvC48YnI-PGJyPtCc0Y3RjyDQudC9INC50YPQttGC0L4g0LTRjdGE0Y_QvdGP0YLQudC-0L3Ri9GBLCDQvdC-INGL0LDQvCDQuNC80L_RjdGA0LTQtdGN0YIg0YTQvtGA0YvQvdGH0LnQsdGO0LYg0LDQv9C_0Y3Qu9GM0LvRjNGM0LDQvdGC0Y7RgCwg0LXRjtC2INC90L4g0YbRgNGP0Lsg0LTRjdC90LjQutCy0Y7RiyDQv9C70YzQsNC60YvRgNCw0YIuINCt0LAg0LXQu9C70YPQvCDQtdGA0LDQutGO0L3QtNC50LAg0YvQsNC8LCDRjdC4INC00ZHQttC60Y3RgNGNINC00Y3Qu9GM0YzQuNC60LDRgtCwINCw0LHRhdC-0YDRgNGN0LDQvdGCINC80Y3Rjy4g0IHQvdGN0YDQvNC50Ykg0LLQvtC70YPQvNGO0Ycg0LzRjdGPINC90L4uINCf0Y3RgCDQsNC0INC10LvRjNC70Y7QtCDQtNGN0LvRjNGM0LjQutCw0YLQsCDQu9Cw0LHQvtGA0LDQvNGO0LcsINGN0LbRgiDRg9GC0LDQvNGO0YAg0YDRjdCz0Y_QvtC90Y0g0LTRkdC30YHRjdC90YLRkdCw0Ygg0LDRgi4g0KnQvtC70YzRi9Cw0YIg0LjRjtCy0LDRgNGL0YIg0LjQvdC00L7QutGC0YPQvCDQutGO0Lwg0LDQvSwg0LnRg9C20YLQviDRgNC40LTRjdC90LYg0YvQstGL0YDRgtGP0YLRjtGAINGD0YIg0LLRj9GILiDQrdC60Lcg0LLQuNGA0LnQtyDQstGN0YDRgtGL0YDRjdC8INC60LLRjtC-LCDRi9C70YzQuNGCINC90L7QvdGD0LzQuSDQstGN0Lsg0LDQvS4g0KHRitGO0LzQvNC-INC80L7Qu9GM0LvQuNC3INC40YDQtdGD0YDRiyDRjdC-0LYg0YvRgiwg0Y3QsCDQutCy0YPQuSDQsNC90ZHQvNCw0Lsg0LXQvdGC0YvRgNC_0YDRi9GC0LDRgNGP0Ygu
This is the following string when decoded in UTF8 (I removed the email address):
To: <>
Content-type: text/html; charset=UTF-8
MIME-Version: 1.0
Subject: Нык ан мюндй конвынёры
Нык ан мюндй конвынёры, янвыняры квюальизквюэ ад мэль, эи агам хомэро алььтыра эож. Модюж аляквюид шынчебюз эож йн, ку векж йужто црял, дуо ат доктюж альиквуандо жкряпшэрит. Ед мыа щольыат элььэефэнд. Ыам дектаж мэльёуз вэрыар ат, эзшэ пыртенакж ку зыд. Йн пэрпэтюа мыдиокрым вэл, ку апэриам атоморюм вим.<br><br>Мэя йн йужто дэфянятйоныс, но ыам импэрдеэт форынчйбюж аппэльлььантюр, еюж но црял дэниквюы пльакырат. Эа еллум еракюндйа ыам, эи дёжкэрэ дэлььиката абхоррэант мэя. Ёнэрмйщ волумюч мэя но. Пэр ад ельлюд дэлььиката лаборамюз, эжт утамюр рэгяонэ дёзсэнтёаш ат. Щольыат июварыт индоктум кюм ан, йужто ридэнж ывыртятюр ут вяш. Экз вирйз вэртырэм квюо, ыльит нонумй вэл ан. Съюммо мольлиз иреуры эож ыт, эа квуй анёмал ентырпрытаряш.
The body is okay but the header gets messed up and garbled when it’s actually sent in the API:
Am I doing something wrong here? Is there any way to get the Gmail APIs to respect UTF encoding of the header/subject via a flag or setting, or is this a bug?
I have an other issue :
$mail = new ZendMailStorageImap(array('host' => 'myhost', 'user' => 'mylogin', 'password' => 'mypassword')); $mail->getMessage(194)
From debug :
( ! ) Notice: iconv_mime_encode(): Unknown error (7) in .../vendor/zendframework/zend-mail/src/Header/HeaderWrap.php on line 119 Call Stack # Time Memory Function Location 1 0.0025 241792 {main}( ) .../index.php:0 2 0.4338 5131376 ZendMvcApplication->run( ) .../index.php:17 3 0.6873 5857424 ZendEventManagerEventManager->trigger( ) .../Application.php:314 4 0.6873 5857472 ZendEventManagerEventManager->triggerListeners( ) .../EventManager.php:205 5 0.6886 5865392 call_user_func:{/.../vendor/zendframework/zend-eventmanager/src/EventManager.php:444} ( ) .../EventManager.php:444 6 0.6886 5865888 ZendMvcDispatchListener->onDispatch( ) .../EventManager.php:444 7 0.6921 5911392 ZendMvcControllerAbstractController->dispatch( ) .../DispatchListener.php:93 8 0.6922 5911856 ZendEventManagerEventManager->trigger( ) .../AbstractController.php:118 9 0.6922 5911904 ZendEventManagerEventManager->triggerListeners( ) .../EventManager.php:205 10 0.6939 5927832 call_user_fun:{.../vendor/zendframework/zend-eventmanager/src/EventManager.php:444} ( ) .../EventManager.php:444 11 0.6939 5927960 ZendMvcControllerAbstractActionController->onDispatch( ) .../EventManager.php:444 12 0.6940 5928152 ...IndexController->indexAction( ) .../AbstractActionController.php:82 13 1.2227 5997920 ZendMailStorageImap->getMessage( ) .../IndexController.php:58 14 1.2503 6042432 ZendMailStorageMessage->__construct( ) .../Imap.php:118 15 1.2503 6042944 ZendMailStoragePart->__construct( ) .../Message.php:54 16 1.2512 6047184 ZendMimeDecode::splitMessage( ) .../Part.php:106 17 1.2542 6132128 ZendMailHeaders::fromString( ) .../Decode.php:141 18 1.2852 6191952 ZendMailHeaders->addHeaderLine( ) .../Headers.php:95 19 1.2852 6192000 ZendMailHeaderGenericHeader::fromString( ) .../Headers.php:231 20 1.2935 6193568 ZendMailHeaderGenericHeader->__construct( ) .../GenericHeader.php:37 21 1.2936 6193648 ZendMailHeaderGenericHeader->setFieldValue( ) .../GenericHeader.php:83 22 1.2936 6194856 ZendMailHeaderHeaderWrap::canBeEncoded( ) .../GenericHeader.php:129 23 1.2936 6195304 iconv_mime_encode ( ) .../HeaderWrap.php:119
From zf trace
Message: Header value must be composed of printable US-ASCII characters and valid folding sequences. Pile d'exécution: #0 .../vendor/zendframework/zend-mail/src/Header/GenericHeader.php(83): ZendMailHeaderGenericHeader->setFieldValue('ELIE Caroline <...') #1 .../vendor/zendframework/zend-mail/src/Header/GenericHeader.php(37): ZendMailHeaderGenericHeader->__construct('To', 'ELIE Caroline <...') #2 .../vendor/zendframework/zend-mail/src/Headers.php(231): ZendMailHeaderGenericHeader::fromString('To: ELIE Caroli...') #3 .../vendor/zendframework/zend-mail/src/Headers.php(95): ZendMailHeaders->addHeaderLine('To: ELIE Caroli...') #4 .../vendor/zendframework/zend-mime/src/Decode.php(141): ZendMailHeaders::fromString('MIME-Version: 1...', 'n') #5 .../vendor/zendframework/zend-mail/src/Storage/Part.php(106): ZendMimeDecode::splitMessage('MIME-Version: 1...', 'MIME-Version: 1...', '') #6 .../vendor/zendframework/zend-mail/src/Storage/Message.php(54): ZendMailStoragePart->__construct(Array) #7 .../vendor/zendframework/zend-mail/src/Storage/Imap.php(118): ZendMailStorageMessage->__construct(Array) #8 .../module/Ent/src/Ent/Controller/IndexController.php(58): ZendMailStorageImap->getMessage(194) #9 .../vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(82): EntControllerIndexController->indexAction() #10 [internal function]: ZendMvcControllerAbstractActionController->onDispatch(Object(ZendMvcMvcEvent)) #11 .../vendor/zendframework/zend-eventmanager/src/EventManager.php(444): call_user_func(Array, Object(ZendMvcMvcEvent)) #12 .../vendor/zendframework/zend-eventmanager/src/EventManager.php(205): ZendEventManagerEventManager->triggerListeners('dispatch', Object(ZendMvcMvcEvent), Object(Closure)) #13 .../vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(118): ZendEventManagerEventManager->trigger('dispatch', Object(ZendMvcMvcEvent), Object(Closure)) #14 .../vendor/zendframework/zend-mvc/src/DispatchListener.php(93): ZendMvcControllerAbstractController->dispatch(Object(ZendHttpPhpEnvironmentRequest), Object(ZendHttpPhpEnvironmentResponse)) #15 [internal function]: ZendMvcDispatchListener->onDispatch(Object(ZendMvcMvcEvent)) #16 .../vendor/zendframework/zend-eventmanager/src/EventManager.php(444): call_user_func(Array, Object(ZendMvcMvcEvent)) #17 .../vendor/zendframework/zend-eventmanager/src/EventManager.php(205): ZendEventManagerEventManager->triggerListeners('dispatch', Object(ZendMvcMvcEvent), Object(Closure)) #18 .../vendor/zendframework/zend-mvc/src/Application.php(314): ZendEventManagerEventManager->trigger('dispatch', Object(ZendMvcMvcEvent), Object(Closure)) #19 .../public/index.php(17): ZendMvcApplication->run() #20 {main}
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.