Я хочу взять строку и сохранить ее в базе данных MYSQL. Эта строка будет строкой HTML, и она может иметь любую кодировку символов или быть написана на любом языке.
Как я могу безопасно сохранить это в моей базе данных MYSQL, не затрагивая строку HTML, чтобы потом я мог ее восстановить, как есть?
Кроме того, поле, в котором он будет храниться, имеет text
типа данных и имеет сортировку latin1_swedish_ci
, это повлияет на это?
В настоящее время я делаю это:
htmlentities($html, ENT_QUOTES, 'UTF-8')
Но я не думаю, что это будет работать для всех наборов символов. Я имею в виду, как будут затронуты немецкие или японские персонажи?
Спасибо за любую помощь.
Почему base64 не кодирует его для хранения, а затем декодирует его после?
Вы можете сохранить его в поле BLOB, и MySQL никогда не попытается его преобразовать. Но это означает, что вы помните кодировку, которую вы использовали при сохранении строки.
Другой вариант – кодировать строку как base64.
Я не думаю, что сортировка не повлияет на хранение ценностей. Это повлияет только на поведение, когда вы делаете такие вещи, как сравнения (WHERE) и сортировку (ORDER BY).
IMHO, самый безопасный способ гарантировать, что ваши данные будут неизменными, – это сохранить значения как двоичные. Base64 также будет работать. В любом случае, вы должны знать кодировку символов, когда читаете ее обратно.
Интересно, что все предлагают base64, я никогда не думал об этом. Я знаю много баз данных CMS, которые я использовал, просто использую кодировку символов utf-8. Это поможет вашим германиям и японским персонажам. HTML не должен быть затронут и будет отображаться в браузере отлично, пока HTML-кодировка также является utf-8 charset = utf-8