【发布时间】:2010-11-08 13:33:54
【问题描述】:
我在运行 linux 的服务器上有一个包含 Unicode 字符的文件。如果我通过 SSH 连接到服务器并使用制表符完成导航到包含 unicode 字符的文件/文件夹,则访问文件/文件夹没有问题。当我尝试通过 PHP 访问文件时出现问题(我访问文件系统的函数是 stat)。如果我将 PHP 脚本生成的路径输出到浏览器并将其粘贴到终端,则该文件似乎也存在(即使查看终端,文件路径完全相同)。
我通过 php_ini 将 PHP 设置为使用 UTF8 作为其默认编码,并设置了mb_internal_encoding。我检查了 PHP 文件路径字符串编码,它应该是 UTF8。再四处寻找,我决定 hexdump 终端的制表符完成的 é 字符,并将其与 PHP 脚本创建的“常规” é 字符的 hexdump 进行比较,或者通过键盘手动输入字符( os x 上的选项+e+e)。结果如下:
允许在终端中正确引用文件的 é 字符是 3 字节字符。我不确定从这里去哪里,我应该在 PHP 中使用什么编码?我应该通过iconv 或mb_convert_encoding 将路径转换为另一种编码吗?
【问题讨论】:
标签: php unicode encoding utf-8 filepath