0

I do not know how to properly set charset in session - polish language, I have something like this usuni�ty. Thank you in advance for your help

head file - list_photos_45.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>

 <?php echo message(); ?>

</body>
</html>

file - delete.php

$_SESSION["message"] = "Ten produkt został usunięty.";
        redirect_to("list_photos_45.php"); 

session

<?php

  session_start();
  header('Content-Type: text/html; charset=utf-8');

  function message() {
    if (isset($_SESSION["message"])) {
      $output = "<div class=\"message\">";
      $output .= htmlentities($_SESSION["message"]);
      $output .= "</div>";

      // clear message after use
      $_SESSION["message"] = null;

      return $output;
    }
  }

  function errors() {
    if (isset($_SESSION["errors"])) {
      $errors = $_SESSION["errors"];

      // clear message after use
      $_SESSION["errors"] = null;

      return $errors;
    }
  }

?>
4

3 回答 3

2

不要htmlentities()在没有给出编码(第三个参数)的情况下使用消息。在 PHP < 5.4 中默认为 ISO-8859-1,并将多字节字符的每个字节转换为其加工实体,破坏原始字符。

最好只使用它htmlspecialchars()。您已经在使用 UTF-8,您现在需要的只是转义 HTML 中具有特殊含义的字符以防止 XSS 攻击。

于 2013-11-12T08:37:22.677 回答
1

在您的编辑器中,确保将页面保存为不带 BOM(字节顺序标记)的 UTF-8。现在您的页面被编码为 ANSI,而浏览器正在以 UTF-8 格式读取它们,这就是您有错误字符的原因。

编辑:你不必使用 htmlentities。

于 2013-11-12T08:42:32.103 回答
1

尝试这个

$con = mysqli_connect($servername, $username, $password, $dbname);
$con->set_charset("utf8");

和文档 mysqli_set_charset

于 2020-06-27T09:26:06.867 回答