У меня здесь что-то странное, и я не понимаю, почему на моем сервере php 5.2.5 (Just on Linux, php-серверы Windows не имеют одинаковой проблемы). Когда я использую форму POST для публикации содержимого на входе, содержащем «é», а с другой стороны я
echo(htmlentities($_POST["myinput"]))
это é
Но если я повторю
$_POST["myinput"]
просто он показывает «é», поэтому это означает, что мои htmlentities не используют UTF-8 по умолчанию, где я могу изменить Charset, используемый htmlentities?
Я попытался изменить его в моем php.ini default_charset = «UTF-8», но он тоже не сработает?
htmlspecialchars($str, ENT_QUOTES, "UTF-8")
Это также лучше предотвращает xss, чем просто htmlentities()
В версии 5.4.0 значение по умолчанию для параметра кодирования было изменено на UTF-8.
Источник: руководство
Единственный способ изменить htmlentities()
– это указать ее в третьем параметре.
Невозможно изменить кодировку по умолчанию. До PHP 5.4 Это всегда iso-8859-1
.
Однако это было изменено в PHP 5.4 и теперь оно всегда utf-8
Из руководства php: htmlentities () принимает необязательную кодировку третьего аргумента, которая определяет кодировку, используемую при преобразовании. Из PHP 5.6.0 значение default_charset используется по умолчанию. Из PHP 5.4.0 UTF-8 по умолчанию. PHP до 5.4.0, ISO-8859-1 используется по умолчанию. Хотя этот аргумент технически необязателен, вам настоятельно рекомендуется указать правильное значение для вашего кода.
И если вы не хотите беспокоиться о стольких разных кодировках кодировки или если htmlentities не работает для вас, вот альтернатива: я использовал mysqli DB connection (и PHPV5) сообщение формы для записи / вставки в MySQl DB.
$Notes = $_POST['Notes']; //can be text input or textarea. $charset = mysqli_character_set_name($link); //mysqli connection printf ("To check your character set but not necessary %s\n",$charset); $Notes = str_replace('"', '"', $Notes); //double quotes for mailto: emails. $von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é"); //to correct double whitepaces as well $zu = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é"); $Notes = str_replace($von, $zu, $Notes); echo " Notes:".$Notes."<br>" ; $Notes = mysqli_real_escape_string($link, $Notes); //for mysqli DB connection. // Escapes special characters in a string for use in an SQL statement echo " Notes:".$Notes ; //ready for inserting