Skip to content

fix(packages): package installer fails with multibyte characters in readme - #84

Open
Ibochkarev wants to merge 2 commits into
3.xfrom
fix/16725-package-installer-multibyte-readme
Open

fix(packages): package installer fails with multibyte characters in readme#84
Ibochkarev wants to merge 2 commits into
3.xfrom
fix/16725-package-installer-multibyte-readme

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

Позволяет Package Management устанавливать Extras, чьи readme или метаданные содержат эмодзи (и другие символы вне BMP) на MySQL-базах, всё ещё использующих utf8 / utf8mb3.

Когда колонки metadata / attributes пакета не могут хранить utf8mb4, modTransportPackage::set() переписывает только валидные 4-байтовые UTF-8 последовательности в HTML-сущности (например 🚀🚀). utf8mb4-базы не трогаются. Конверсия не требует mbstring.

Зачем нужно

На не-utf8mb4 сайтах download/install падает с:

Could not download and create transport package with signature: …

Метаданные провайдера и локальные атрибуты пакета оба идут через set(), поэтому одна точка покрывает remote и загруженные пакеты. Перевод всего сайта на utf8mb4 по-прежнему работает; это изменение для установок, которые не могут или ещё не мигрировали. См. #16725 и подход entity-conversion из issue.

Как проверить

  1. Используйте MySQL с connection/column charset utf8 или utf8mb3 (не utf8mb4).
  2. Скачайте или загрузите Extra с эмодзи в readme (например modAI 0.11).
  3. Подтвердите, что пакет появляется и устанавливается.
  4. Откройте детали пакета и подтвердите, что readme по-прежнему показывает эмодзи (браузер рендерит сущность).
  5. На utf8mb4-сайте повторите и подтвердите, что хранимое значение остаётся реальным Unicode, а не сущностями.

Связанные

Refs modxcms#16725

Оригинал: modxcms#16837

Convert supplementary-plane UTF-8 in transport package metadata and
attributes to HTML entities only when the DB cannot store utf8mb4.
Avoids mbstring and leaves utf8mb4 installs untouched.
Require utf8mb4 on both the metadata column and the MySQL connection
before skipping emoji encoding, and assert entity conversion before
INSERT in the regression test.
@Ibochkarev Ibochkarev changed the title fix(packages): установщик пакетов падает с multibyte-символами в readme fix(packages): package installer fails with multibyte characters in readme Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant