t9221823420
@t9221823420
PHP developer

В чем различие между utf8mb4, UCS-4BE', 'UTF-32' PHP/MySQL?

Необходимо определить числовой номер UTF-символа.

unpack('N', mb_convert_encoding($utf8Character, 'UCS-4BE', 'UTF-8'))[1]; - это все работает.
также некоторые предлагают конвертить в 'UTF-32BE' - зачем?

в MySQL данные хранятся в utf8mb4. это 4 байта на символ.

Хочу понять, зачем необходимо конвертировать в UCS-4BE, если у нас итак данные храняться в 4 байтах гарантированно.
Если не конвретировать, конструкция не работает - почему?

И не совсем понял чем всетаки отличаются UCS-4BE и UTF-32?
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
в MySQL данные хранять̷̸ся в utf8mb4. это 4 байта на символ

Не четыре, а от одного до четырёх.

чем все-таки отличаются UCS-4BE и UTF-32?

UTF-32 - это подмножество UCS-4. UCS-4 поддерживает символы с кодами от 0 до 7FFFFFFF, UTF-32 - с кодами от 0 до 10FFFF. Суффиксы LE и BE - определяют порядок записи байтов, Little-Endian и Big-Endian.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
egor_nullptr
@egor_nullptr
В кодировке utf8mb4 длина символа варьируется от 1 до 4 байт. В кодировках UCS-4 и UTF-32 длина символа всегда 4 байта. Чем они отличаются можно прочитать в википедии https://en.wikipedia.org/wiki/UTF-32
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы