#postgresql #drupal #character #byte
Вопрос:
На странице документации Drupal (https://www.drupal.org/docs/7/api/schema-api/data-types/varchar) Я читал:
Убедитесь, что вы осведомлены о влиянии многобайтового набора символов. VARCHAR(255) хранит 255 символов, которые могут превышать 255 байт.
Поэтому мне стало любопытно, каков максимально возможный размер 255 символов?
Ответ №1:
Согласно RFC 2279, максимально возможный символ (кодовая точка 0x7FFF FFFF) может быть представлен 6 байтами. Максимально возможная кодовая точка, которую вы можете представить в PostgreSQL, равна 0x10FFFF, которая занимает 4 байта:
SELECT E'U0010FFFF';
?column?
══════════
(1 row)
SELECT E'U00110000';
ERROR: invalid Unicode escape value at or near "U00110000"
LINE 1: SELECT E'U00110000';
^
SELECT CAST(E'U0010FFFF' AS bytea);
bytea
════════════
xf48fbfbf
(1 row)
Таким образом, вы в безопасности, если предполагаете верхний предел в 4 байта на символ.
Комментарии:
1. Спасибо. Итак, 0x10FFFF-это какой-то смайлик или что это такое?
2. Нет, он находится в «Дополнительной области частного использования-B», так что я думаю, что это персонаж, который вы можете использовать в своих личных целях. Но вы можете сохранить его в PostgreSQL.