Нужно ли использовать HTML-сущности при хранении данных в базе данных? - PullRequest
6 голосов
/ 15 февраля 2012

Мне нужно хранить специальные символы и символы в базе данных MySQL.Поэтому я могу сохранить его как «ü» или преобразовать в HTML-код, такой как «ü»

. Не уверен, что будет лучше.

Также у меня есть символыкак '♥', '„'.

Пожалуйста, предложите, какой из них лучше?Также предложите, если есть какой-либо альтернативный метод.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 15 февраля 2012

HTML-сущности были введены несколько лет назад для передачи символьной информации по проводам, когда транспортировка не была бинарно-безопасной, и в случае, когда пользовательский агент (браузер) не поддерживал кодировку кодировки транспортного уровня или сервера.

Поскольку сущность HTML содержит только очень простые символы (&, ;, a-z и 0-9), и эти символы имеют одинаковую двоичную кодировку в большинстве наборов символов, это и было очень безопасно от этих символов. побочные эффекты.

Однако, когда вы сохраняете что-то в базе данных, у вас нет этих проблем, потому что вы обычно контролируете и знаете, что и как вы можете хранить в базе данных.

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

На самом деле есть недостатки, когда вы используете сущности HTML вместо простого символа:

  • HTML-объекты занимают больше места: ü намного больше, чем ü в LATIN-1, UTF-8, UTF-16 или UTF-32.
  • HTML-сущности нуждаются в дальнейшей обработке. Их нужно создавать, а при прочтении их нужно анализировать. Представьте, что вам нужно найти конкретный текст в вашей базе данных, иначе любое другое действие потребует дополнительной обработки. Это просто над головой.

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

5 голосов
/ 15 февраля 2012

Оставьте ваши данные в базе данных. Не используйте HTML-объекты для них, пока они не понадобятся для HTML. Вы никогда не знаете, когда захотите использовать свои данные в другом месте, а не на веб-странице.

1 голос
/ 15 февраля 2012

Мое предложение будет отражать других участников, не преобразовывать специальные объекты при сохранении их в вашей базе данных.

Некоторые причины против преобразования:

  • Принцип К.И.С. (моя главная причина этого не делать)
  • большинство сущностей в итоге будут занимать больше места, чем до преобразования
  • потеряет возможность поиска сущностей ü в слове, будет [word]+ü+[/word], и вам придется выполнить сравнение строк html-эквивалента ü => [word]+ü+[/word].
  • ваш вывод может измениться с HTML на API для мобильных устройств и т. Д., Что делает преобразование очень ненужным.
  • необходимо преобразовывать при вводе данных и при выводе (опять же, если ваш вывод изменяется с простого HTML на что-то еще).
...