Как подсказали, использовал encodeURIComponent.
<script>
document.cookie = "cookie="+encodeURIComponent('Etc/GMT+9');
</script>
В браузере сохраняется как cookie=Etc%2FGMT%2B9
<?php
var_dump($_COOKIE['cookie']);
?>
Выводится как:
string(9) "Etc/GMT+9"
Выполняет условие:
if (in_array($takeCookie, DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC)))
В общем, все вроде работает, но есть вопрос.
Из $takeCookie получаю переменную в Octobercms:
$this['tz'] = $takeCookie;
И использую в Twig
{{ "now"|date("H:i:s", "" ~ tz~ "" ) }}
Отображается корректно, но если вместо ~ tz~ в Twig конкретно указать Etc%2FGMT%2B9, то ошибка.
Вопрос, а в какой момент Etc%2FGMT%2B9 преобразуется в Etc/GMT+9 для Twig?
И правильно ли я вообще применил encodeURIComponent?