$ _SESSION уничтожить немецких умлаутов - PullRequest
0 голосов
/ 15 января 2020

есть проблема с немецкими умлаутами в $ _SESSION. Я делаю следующее:

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

Перенаправление работает нормально, но в AnotherScript. php 'ü' в $ _SESSION изменено.

AnotherScript. php выглядит следующим образом:

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

Файлы кодируются в utf8 без DOM, кодировка в обоих файлах - utf8.

Если я вызываю AnotherScript. php с помощью кнопки в html (не через заголовок) все нормально. Угадай заголовок («Местоположение: AnotherScript. php»); не передавайте использованную кодировку вызываемому скрипту. Я пробовал что-то вроде этого: header ("Location: AnotherScript.php; charset = utf-8"), но это не работает. ini_set ( 'default_charset', 'UTF-8'); до или после session_start (); не имеет никакого эффекта.

Спасибо за помощь!

1 Ответ

0 голосов
/ 15 января 2020

Проблема, похоже, зависит от используемого сервера, на моем локальном сервере она работает нормально. Так что спасибо за помощь - я сделал обходной путь: после каждого session_start (); я бегу:

if (mb_detect_encoding($_SESSION['name']) == 'UTF-8') // may only be decoded once!
    $_SESSION['name']= utf8_encode($_SESSION['name']); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...