【发布时间】:2016-10-07 10:03:12
【问题描述】:
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。我认为这不是问题。
提前谢谢你。
【问题讨论】:
-
你试过
htmlspecialchars()吗?我怀疑当 PHP 将变量保存/恢复到文件(它存储会话变量的位置)时,它会损坏。 -
是的,我试过了,我也遇到了同样的问题。谢谢你的尝试。
-
看起来很有趣。我将创建一个测试用例。
-
我不知道是会话变量的问题还是编码的问题......这很奇怪。 ://
-
当你设置了值,立即检查,值是好的。但是,在刷新时(它有可能被写入服务器磁盘/文件或客户端 cookie;并复活),该值被破坏。我假设您尝试过
convert_uuencode和convert_uudecode? UU 编码的字符串应该足够安全,可以在网络/磁盘写入中存活。我无法使用 PHP 服务器对其进行测试。
标签: php windows encoding utf-8 ascii