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

Htmlentities уничтожает строки utf-8

У меня здесь что-то странное, и я не могу понять, почему на моем сервере php 5.2.5 (Just on Linux, php-серверы Windows не имеют такой же проблемы) Когда я использую форму POST для публикации содержимого на входе, содержащем "é", а с другой стороны I

echo(htmlentities($_POST["myinput"])) 

it echos é

Но если я буду эхо меня

$_POST["myinput"] 

просто он показывает "é", поэтому это означает, что мои htmlentities не используют UTF-8 по умолчанию, где я могу изменить Charset, используемый htmlentities?

Я попытался изменить его в моем php.ini default_charset = "UTF-8", но он тоже не сработает?

4b9b3361

Ответ 1

htmlspecialchars($str, ENT_QUOTES, "UTF-8")

Это также лучше предотвращает xss, чем просто htmlentities()

Ответ 2

В версии 5.4.0 значение по умолчанию для параметра кодирования было изменено на UTF-8.

Источник: Manual

Ответ 3

Единственный способ изменить кодировку htmlentities() - указать ее в третьем параметре.

Невозможно изменить кодировку по умолчанию. До PHP 5.4 Это всегда iso-8859-1.

Это было изменено в PHP 5.4, но теперь оно всегда utf-8

Ответ 4

От php manual: htmlentities() принимает необязательную кодировку третьего аргумента, которая определяет кодировку, используемую при преобразовании. Из PHP 5.6.0 значение default_charset используется по умолчанию. Из PHP 5.4.0 UTF-8 по умолчанию. PHP до 5.4.0, ISO-8859-1 используется по умолчанию. Хотя этот аргумент технически необязателен, вам настоятельно рекомендуется указать правильное значение для вашего кода.

Ответ 5

И если вы не хотите беспокоиться о стольких разных кодировках кодировки или если 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