PHP - UTF8会话波兰字符

时间:2013-11-12 08:24:51

标签: php session

我不知道如何在会话中正确设置charset - 波兰语,我有类似usuniÄ ty的内容。提前感谢您的帮助

头文件 - 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"); 

会话

<?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;
    }
  }

?>

3 个答案:

答案 0 :(得分:1)

请勿在不提供编码(第三个参数)的情况下对邮件使用htmlentities()。这在PHP中默认为ISO-8859-1&lt; 5.4,并将多字节charachter的每个字节转换为它的加工实体,破坏原始字符。

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

答案 1 :(得分:0)

在编辑器中,确保将页面保存为UTF-8而不使用BOM(字节顺序标记)。现在你的页面被编码为ANSI,浏览器将它们读作UTF-8,这就是为什么你有不好的字符。

编辑:你不必使用htmlentities。

答案 2 :(得分:0)

尝试

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

和说明文件 mysqli_set_charset