2010-08-13 4 views
0

Когда пользователь отправляет специальный символ ♠ он хранится в базе данных MySQL, как â� и если пользователь хочет изменить его вместо отображения его обратно, как ♠ его отображается â�, как я могу решить эту проблему так что его dsiplayed назад как ♠ и сохранен как ♠?PHP и MySQL специальный символ проблема кодирования

На боковой ноте, как мне сохранить специальные символы с помощью PHP?

Я использую PHP MySQL &

ответ

3
  1. типы пользователей в данных
  2. Вы избежать, что данные, чтобы избежать инъекции SQL (не преобразовать специальные символы в HTML-код, эквивалентный еще)
  3. данных хранится в базе данных точно так, как пользователь вводил ее в
  4. Вы извлекаете исходные данные
  5. Вы запускаете необработанные данные через character encoding function или что-то подобное для преобразования специальных символов в их коды html, избегая при этом межсайтового скриптинга или html-инъекции
-1

Это может быть проблемой.
Если вы хотите преобразовать свои специальные символы в объекты, вы должны htmlencode их дважды при выводе в значение поля/textarea. Но это может быть связано с другими персонажами - все становятся их представлениями сущностей - цитатами, скобками и т. Д. Если это то, о чем вас просят, продолжайте. Но, на мой взгляд, это может быть ужасный беспорядок для редактирования такого текста.
Вот почему лучше не позволять пользователям использовать сущности. Почему они не могут ввести сам символ?

Что касается специальных символов в вашей базе данных - просто используйте кодировку UTF-8 как в базе данных, так и в HTML.

+0

Вам все еще нужно ввести код < and > справа? –

+0

Отредактировал свой ответ. –

+0

Что касается UTF-8, убедитесь, что соединение установлено на UTF-8. mysql_set_charset ('utf8'); – Thomas