【问题标题】:$_SESSION destroy german Umlauts$_SESSION 摧毁德国元音变音
【发布时间】:2020-01-15 22:50:47
【问题描述】:

$_SESSION 中的德语变音符号存在问题。我做以下事情:

<?php
$_SESSION['name']= 'abcüdef'   // where ü is a german umlaut
header("Location: AnotherScript.php");
die();
?>

重定向工作正常,但在 AnotherScript.php 中 $_SESSION 中的 'ü' 已更改。

另一个Script.php是这样的:

<php
echo $_SESSION['name'];   // shows abc?def
?>

文件以 utf8 编码,没有 DOM, 两个文件中的字符集都是 utf8。

如果我通过 html 中的按钮(而不是通过标题)调用 AnotherScript.php,一切都很好。 猜头(“位置:AnotherScript.php”);不要将使用过的字符集提供给被调用的脚本。我试过这样的东西:header("Location: AnotherScript.php; charset=utf-8"),但它不起作用。 ini_set('default_charset','utf-8');在 session_start() 之前或之后;没有效果。

感谢您的帮助!

【问题讨论】:

  • 你用吗? => header('Content-type: text/html; charset=utf-8');
  • 是的,我愿意。在这两个文件中。
  • 请展示一个完整的可重现示例。 session_start() 也丢失了。并且对于纯 php 文件,不要使用关闭标签
  • 你用什么字符编码保存了 PHP 脚本文件?
  • 它的 utf8 没有 DOM - 但感谢您的帮助,我做了一个解决方法。见答案。

标签: php session


【解决方案1】:

问题似乎取决于使用的服务器,在我的本地服务器上它工作正常。 所以谢谢你的帮助 - 我做了一个解决方法: 每次 session_start(); 之后我跑:

if (mb_detect_encoding($_SESSION['name']) == 'UTF-8') // may only be decoded once!
    $_SESSION['name']= utf8_encode($_SESSION['name']); 

【讨论】:

  • 还要确保您的 HTTP 标头包含 Content-Type: text/html; charset=utf-8
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2021-08-23
  • 2017-06-30
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多