我在Windows Server中使用UTF-8编码有一些问题。
使用会话变量:$_SESSION['share'] = '''server'share'almodóvar';
我读了这个,结果是''server'share'amod�var
,这在scandir中工作没有问题。
mb_detect_encoding($_SESSION['share']);
的结果是UTF-8。
但是,如果我刷新页面并读取会话变量,结果是''server'share'amod?var
,并且scandir不再工作。
mb_detect_encoding($_SESSION['share']);
的结果是ASCII
我已经尝试了一些php函数,如utf8_encode()和其他,但这不起作用。
你能帮我吗?
PS:我不知道它是否可以帮助,但我正在使用Joomla CMS。我认为这不是问题所在。
提前感谢。
问题是我的Joomla CMS在我看来破坏了PHP session,他们有自己的session,工作得很好。
在Joomla中,有JSESSIONS。如果有人正在寻找相同的问题,我可以让您查看他们的会话代码。
这是Joomla会话(他们避免了大多数编码和web服务器问题,等等):
解决方案:替换session_start();在外部脚本中使用define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../..' ));
require_once ( JPATH_BASE. '/includes/defines.php' );
require_once ( JPATH_BASE. '/includes/framework.php' );
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
确保修改JPATH_BASE以适应您的目录结构。
替换$_SESSION['name'] = "value";在外部脚本中使用
$session = JFactory::getSession();
$session->set('name', "value");
现在您可以使用:
检索这个会话变量:$session = JFactory::getSession();
echo $session->get('name');
我希望这能对大家有所帮助。