Проблема кодирования при использовании метода htmlentities
У меня проблема с кодировкой символов в php, поэтому вот код php:
n_event=$_GET['ndlann'];
$nom_complet=htmlentities(stripslashes($_POST['nom']));
$email_comment=htmlentities(stripslashes($_POST['email']));
$titre_comment=htmlentities(stripslashes($_POST['titre']));
$texte_comment=htmlentities(stripslashes(nl2br($_POST['commentaire'])));
$pays_comment=$_POST['pays'];
$date_ajout=date('Y/m/d');
Данные будут добавлены в таблицу базы данных, вы видите, что эти данные поступают из формы комментариев, поэтому, когда пользователь вводит некоторые комментарии с каракулями на восточных языках (арабский, иврит... и т. Д.), Входные данные изменятся на что-то вроде:
ØÙ�را Ø1Ù�-� اÙ�-�-�ضÙ�Ø
Я попытался удалить метод htmlentities, и это работает нормально, но возникает другая проблема безопасность формы комментариев (будут выполняться сценарии js)
Что я могу сделать в этой ситуации?
И спасибо
2 answers
Никогда не используйте htmlentities().
Эта функция давно устарела.
Вместо этого используйте htmlspecialchars()
.
У вас также есть куча ерунды в вашем коде
Выполнение
htmlentities(nl2br(*))
не имеет смысла.Сделайте косые черты условными, только если установлены магические кавычки.
Возможна проблема с полем
pays
.Я также боюсь, что вы используете htmlentities как своего рода функцию сопровождения SQL. Неужели я правильно?
На мой взгляд, и согласно документу PHP, принятый ответ неверен. Нигде не написано, что эта функция устарела.
Если вы правильно зададите третий аргумент функции, называемый $encoding
, это решит вашу проблему.
Я надеюсь, что это поможет.