gpt4 book ai didi

php - UTF-8、PHP、Win7 - 现在有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:31 24 4
gpt4 key购买 nike

Update: Just to not make you reading through all: PHP starting with 7.1.0alpha2 supports UTF-8 filenames on Windows. (Thanks to Anatol-Belski!)

根据 stackoverflow 上的一些链接链,我找到了部分答案:
https://stackoverflow.com/a/10138133/3716796翁贝托·萨尔西
(关于同一个问题:Artefacto 的 https://stackoverflow.com/a/2950046/3716796)
简而言之:“PHP 作为“非 Unicode 感知程序””与底层文件系统通信,因此 Windows 赋予 PHP 的所有文件名,反之亦然由 Windows 自动翻译/重新编码。这会导致错误。而且您似乎无法停止自动重新编码。
(以及 Artefacto 的 https://stackoverflow.com/a/2888039/3716796:
PHP 不使用广泛的 WIN32 API 调用,因此您受到代码页的限制。”)
https://bugs.php.net/bug.php?id=47096有 PHP 的错误报告。

Though on there nicolas suggests, that a COM-object might work!
$fs = new COM('Scripting.FileSystemObject', null, CP_UTF8);

也许我有时会尝试一下。

所以我的问题剩下的部分是:是否有 PHP6 出来了,或者它被撤回了,或者关于这个主题的 PHP 有什么新的东西吗?

//完整问题
关于这个话题的问题最多的是 1 到 5 岁的 child 。php现在可以使用保存文件吗file_put_contents($dir . '/' . $_POST['fileName'], $_POST['content']);

当 $_POST['fileName'] 是 UTF-8 编码时,例如“Крым.xml”?目前保存为Крым.xml

我检查了 fileName 变量,所以我可以确定它是 UTF-8:echo mb_detect_encoding($_POST['fileName']);

  1. 现在 PHP 中有什么新的东西可以完成它吗?
  2. 在某些地方,我读到 PHP 6 可以做到这一点,但如果我没记错的话,PHP 6 已被撤销。 ?
  3. 在 Windows 资源管理器中,我可以将文件名更改为“Крым.xml”。据我了解旧的问题和答案,如果 fileName-var 被简单地编码为 Windows 7 使用的编码并且它是 NTFS 光盘,则应该可以使用 file_put_contents。甚至有3个老问题的答案声称已经成功:
    PHP File Handling with UTF-8 Special Characters
    Convert UTF-16LE to UTF-8 in php
    PHP: How to create unicode filenames

    总的来说,大多数认可的答案都说这是不可能的。我已经亲自检查了所有建议的答案,但没有一个有效。
  4. 如何绝对准确地找出我的 Win 7 和 Explorer 使用哪种编码将文件名保存在我的 NTFS 光盘上并使用德语设置?如前所述:我可以在资源管理器中创建文件“Крым.xml”。

我的结论:
1. 将文件名(我尝试将其转换为 UTF-16、UTF-16LE、ISO-8859-1 和 Windows-1252)移交给 Windows 时,file_put_contents 无法正常工作,
2.或者 file_put_contents 只是没有实现以适当的方式调用 Windows 自己的文件函数的方法(因此第二种可能性意味着它不是错误,只是没有实现。)(例如 notepad++ 创建、编写和重命名文件没有问题名为 Крым.xml 的文件。)

这只是我收到的错误消息的一个例子,在这种情况下,当我使用mb_convert_encoding($theFilename, 'Windows-1252', 'UTF-8')

“警告:file_put_contents(dirToSaveIn/????.xml):无法打开流:C:\aa xampp\htdocs\myinterface.lo\myinterface\phpWriteLocalSearchResponseXML.php 中没有错误第 26 行”通过其他转换,我收到了其他错误消息,从“无效字符”到根本无法识别任何字符串。

问候语约翰

最佳答案

从 7.1.0alpha2 开始的 PHP 在 Windows 上支持 UTF-8 文件名。

谢谢。

关于php - UTF-8、PHP、Win7 - 现在有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com