List directories containing Unicode characters on Windows(在 Windows 上列出包含 Unicode 字符的目录)
问题描述
我正在使用 Windows 2003 编写一些 PHP 代码.我使用 XAMPP Portable(复制到 D:).问题:
I am using Windows 2003 to write some PHP code. I use XAMPP Portable (copy to D:). The problem:
$path = 'D:ebooks';
$all_file = scandir($path);
foreach ($all_file as $file) {
if (is_dir("$path/$file") && $file != '.' && $file != '..') {
echo $file . "<br />
";
}
}
当我调用脚本(使用浏览器)时,我没有看到任何包含 Unicode 字符的目录(在 D:ebooks 中)(我用越南语、日语、中文、捷克语进行了测试).
When I call the script (with browser), I didn't see any directories (within D:ebooks) containing a Unicode character (I tested with Vietnamese, Japanese, Chinese, Czech).
但是如果我删除is_dir("$path/$file")
,目录显示有很多奇怪的字符和很多???
字符.
But if I remove is_dir("$path/$file")
, the directories display with many strange characters and many ???
characters.
我该如何解决问题?
推荐答案
不幸的是,存在许多与 PHP 访问 Windows 文件系统相关的错误.虽然 Windows 确实将文件名存储为 UTF-16,但 PHP 的内部使用了更旧的 ANSI api.所以最好只使用 ascii 范围内的文件名,或者切换到不同的操作系统.
Unfortunately, there are a lot of bugs related to PHP access to a windows filesystem. While Windows does store the filenames as UTF-16, PHP's internals use the much older ANSI api's. So it's best to only do stuff with filenames that are in the ascii range, or switch to a different operating system.
这篇关于在 Windows 上列出包含 Unicode 字符的目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 Windows 上列出包含 Unicode 字符的目录
基础教程推荐
- HTTP 与 FTP 上传 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01