Подтвердить что ты не робот

Должны ли мы HTML-кодировать специальные символы перед их сохранением в базе данных?

Я использую MySQL для хранения данных, и мои веб-страницы кодируются как UTF-8. У меня есть много португальских символов, таких как ç и õ, и мне интересно, если я должен сбежать из HTML до их хранения.

Следует ли хранить & как &, например? И почему бы нет)? Каковы преимущества и недостатки/лучшие практики?

4b9b3361

Ответ 1

Не кодируйте HTML-символы перед хранением. Вы должны хранить как можно более чистую форму своих данных. HTML-кодирование необходимо, потому что вы собираетесь отображать данные на HTML-странице, а также кодирование при обработке данных для создания страницы. Например, предположим, что вы решили, что собираетесь отправлять данные в текстовые электронные письма. Если вы кодировали HTML-данные, теперь кодировка HTML является барьером, который вы должны отменить.

Выберите каноническую форму для своих данных и сохраните ее. UTF-8 замечательный, и ваша база данных поддерживает его (при условии, что вы правильно создали все свои таблицы). Просто сохраните UTF-8.

Ответ 2

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

Ответ 3

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

Вы обеспокоены HTML-версией данных или кодировкой символов?

Я бы сказал, попробуйте не делать специальной кодировки символов в БД, если вы можете избежать этого. Поиск, необходимость запоминать специальную обработку в привязке/выводе и т.д.

Ответ 4

Если вы делаете 100 или 1000 презентаций страниц для каждой записи, тогда кодирование по пути в этом случае будет более эффективным. Но в большинстве случаев я предполагаю, что разница будет незначительной.

Но другие причины (чтобы не кодировать) хороши, без сомнения, и в любом случае бессмысленно кодировать символы, которые нравится UTF-8.

Ответ 5

Я бы не кодировал его в базе данных, если не было ясного и определенного значения для этого. Вы (и любой другой, кто когда-либо будет работать с данными) должны помнить об отказе от использования при использовании этих данных или избежать любых данных, которые вы вставляете, обновляете или сравниваете с этим полем. Я не уверен, в чем преимущество - это ускользнуть от него, но это, вероятно, не стоит.

Ответ 6

Я бы сказал, что кодирование на пути в базу данных на самом деле представляет угрозу безопасности, потому что это означает, что вы, по-видимому, не будете кодировать базу данных и браузер (так как это приведет к двойному кодированию). Это означает, что если есть маршрут или сейчас или в будущем для незарегистрированных данных, чтобы попасть в вашу базу данных, это будет отправлено в незашифрованный браузер. Лучше кодировать между базой данных и браузером и, следовательно, хранить unencoded IMHO.