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

2024-05-18

更新:只是为了不让您阅读所有内容:PHP 开头 7.1.0alpha2 在 Windows 上支持 UTF-8 文件名。 (感谢阿纳托尔-贝尔斯基!)

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

尽管尼古拉斯在那里建议,COM 对象可能会起作用!
$fs = new COM('Scripting.FileSystemObject', null, CP_UTF8);

也许有时我会尝试一下。

所以我的问题剩下的部分是:PHP6 是否已经推出,或者是否已被撤回,或者 PHP 是否有关于该主题的新内容?

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

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

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

  1. PHP 现在有什么新功能可以实现这一目标吗?
  2. 在某些地方我读到PHP 6就可以做到这一点,但是PHP 6如果我没记错的话,已经被撤回了。 ?
  3. 在 Windows 资源管理器中,我可以将文件名更改为“Крым.xml”。据我了解旧的问题和答案,如果 fileName-var 简单地编码为 Windows 7 使用的编码并且它是 NTFS 光盘,则应该可以使用 file_put_contents 。 甚至有 3 个老问题的答案声称已经成功:
    使用 UTF-8 特殊字符的 PHP 文件处理 https://stackoverflow.com/questions/7502685/php-file-handling-with-utf-8-special-characters
    在php中将UTF-16LE转换为UTF-8 https://stackoverflow.com/questions/6980068/how-to-convert-utf-16le-to-utf-8-in-php
    and PHP:如何创建 unicode 文件名 https://stackoverflow.com/questions/6467501/php-how-to-create-unicode-filenames

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

我的结论:
1. 将 fileName(我尝试转换为 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):无法打开流:第 26 行 C:\aa xampp\htdocs\myinterface.lo\myinterface\phpWriteLocalSearchResponseXML.php 中没有错误” 通过其他转换,我收到其他错误消息,从“无效字符”到根本无法识别字符串。

问候 约翰


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

Thanks.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名? 的相关文章

  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp
  • 从 Symfony2 中的 http_basic auth 注销

    每当我去 admin logout 我已正确重定向到项目的根目录 但在访问时仍处于登录状态 admin 因为没有提示我输入凭据 这是我的配置 安全 yml security firewalls admin area pattern admi
  • php 中 php.ini 的 log_errors 和 error_log

    我正在尝试通过 php ini 更改 php ini 中的设置 我的问题是 当出现错误时 它不会放入文件 error log txt 中 那么我做错了什么 这是我的代码 Settings for php ini ini set sessio
  • “警告:mysql_query():提供的参数不是有效的 MySQL-Link” - 为什么?

    我的代码有什么问题吗 我不断收到此错误 Warning mysql query supplied argument is not a valid MySQL Link resource in functions php on line 4
  • PHP 函数 iconv 字符编码从 iso-8859-1 到 utf-8

    我正在尝试将字符串从 iso 8859 1 转换为 utf 8 但是当我找到这两个字符 和 时 函数返回 一个字符 是一个里面有两个数字的正方形 我该如何解决这个问题 我认为您正在寻找的编码是Windows 代码页 1252 http en
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 提交简单 PHP 表单时出现禁止错误

    我有一个不复杂的问题 这似乎比应有的更复杂 我有一个简单的表单 用于向网站添加内容 有些字段需要输入html 然而 当您在表单的不同部分输入某些 html 元素时 它会认为它讨厌您并抛出禁止的 403 错误 这是下面的表格
  • PHP FTP_PUT 上传到目录

    我正在自学PHP 一本名为 PHP完全参考 PHP5 2 的书 我目前正在使用第 11 章 FTP 上传 删除 makedir 等 但遇到了一些本书未涵盖的问题 根据我的教科书 这是上传到服务器的简单代码 connect ftp conne
  • 使用 PHP 创建、编辑和删除 crontab 作业?

    是否可以使用 PHP 创建 编辑和删除 crontab 作业 我知道如何列出 Apache 用户当前的 crontab 作业 output shell exec crontab l echo output 但是如何使用 PHP 添加 cro
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决
  • 与 PHP 相比,Python 与 HTML 的“流畅”程度如何?

    我正在考虑从使用 PHP 切换到使用 Python 来开发 Web 应用程序 但我想知道 Python 是否像 PHP 一样擅长在 HTML 中穿插 本质上 我发现它使用起来非常简单 直观将 PHP 放在我想要的位置 然后可以随意安排 组织
  • CakePHP Unfilled 单选按钮在提交时更改为不需要的值

    我有这个表单元素 form gt input ChecklistResponseGovernmentInfo driversLicenseIsOnline array type gt radio empty gt true options
  • Google Closure 编译器和 multipart/form-data 不起作用

    我正在向 google 闭包编译器 API 服务发出请求 content file get contents file js url http closure compiler appspot com compile post true p
  • 如何将路径添加到 Apache PATH 变量?

    我在 apache2 的 custom conf 文件中设置了以下内容 SetEnv PATH PATH opt local lib mysql5 bin this is a test 但是它不起作用 当我打电话时 hey shell ex
  • 如何验证上传的文件是视频?

    我的服务器上有一些非常敏感的信息 因此安全性是一个大问题 用户需要能够上传视频 我知道允许用户上传文件会带来安全威胁 因为没有 100 的方法可以阻止他们上传非视频 但我显然可以选择服务器将保留哪些文件 我知道检查文件扩展名是不够的 检查
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • 什么是 PHP session_start()

    它是否基于 cookie 启动当前会话 从 PHP 网站上得到的 PHP如何控制会话 如果我在用户打开我的登录页面时启动会话 我什至可以使用该会话做什么 我可以使用当前会话来获取有关登录用户的信息吗 PHP 会话系统允许您将数据安全地存储在
  • 使用 yaml 路由描述时如何在运行时获取 Symfony2 中的路由名称?

    在这里你可以找到我的n关于 Symfony2 的第一个问题 我正在与一个分页捆绑 https github com makerlabs PagerBundle wiki使用中提供的路由名称routing yml文件 从我的角度来看 这种方法
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • N层架构设计关注点分离

    我意识到已经有很多关于 n 层设计的帖子 这可能是我思考过度和兜圈子 但我自己现在很困惑 希望从社区得到一些澄清 我试图将我创建的项目 并且一开始就没有很好地设计架构 分成不同的层 每个层都在自己的项目中 UI 业务对象 逻辑 商业 DAL
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • UICollectionView 拖放文件夹创建

    我正在使用 UICollectionView 创建 iOS 画廊应用程序 我希望用户能够拖放图像来重新排序图库并创建文件夹 类似于 iPhone 上的主屏幕 我发现了以下内容tutorial http nshint io blog 2015
  • 根据 .NET Core 2.1 中的更改重新加载 Serilog JSON 配置

    我目前正在开发 ASP NET Core 2 1 应用程序 并使用 Serilog 进行日志记录 我想在运行时为我的 Serilog 实现重新加载应用程序设置文件 我的目标是在运行时更改日志级别 例如我写入minimumLevelDebug
  • 修改异步不工作

    我正在尝试在发布后编辑嵌入的消息 我试图使用文档中的这个示例 但它不起作用 https discord foxbot me docs api Discord MessageProperties html https discord foxb
  • Symfony2 自定义密码编码器(bcrypt)

    我已经编写了自己的密码编码器 它实现了PasswordEncoderInterface class BCryptPasswordEncoder implements PasswordEncoderInterface protected en
  • PHP 错误:“无法通过引用传递参数 2”

    我只是需要有关这个 PHP 错误的帮助 我不太明白 致命错误 无法在第 13 行 web stud openup inactivatesession php 中通过引用传递参数 2
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 使用 SDL2 渲染精灵

    我对游戏开发非常陌生 我正在尝试使用 SDL 在窗口上移动精灵 我正在使用http gamedevgeek com tutorials moving sprites with sdl http gamedevgeek com tutoria
  • 捕获而不尝试编译成功

    以下代码使用 g 版本 5 1 0 成功编译 注意catch没有对应的try在成员函数中foo bar 我想知道这种语法是否合法 如果合法 它会产生什么影响 struct foo void bar catch int main foo f
  • Quartz 与“反应式扩展”

    我正在寻找 C 的调度库 很长一段时间以来 我认为 唯一 的选择是 Quartz NET 它非常强大并且工作得很好 但是当我发现 Reactive Extensions RX http msdn microsoft com en us da
  • 如何使用C#与Chrome(Chrome扩展)通信?

    我想创建一个可以在我的 C 应用程序和扩展之间进行通信的桥梁 这是我真正想要的解释 我创建了一个扩展 它将获取 HTML 元素的详细信息 但每次启动 Chrome 时都会启动 除了这样做之外 有什么方法可以向我的 chrome 扩展发送消息
  • 将 ftransform 与折叠 R 包中的 fgroup_by 一起使用

    我正在尝试重现以下输出dplyr代码与R包裹collapse dplyr Code library tidyverse starwars gt select name mass species gt group by species gt
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • 实体框架 - 绑定 WPF 树视图控件

    在服务类别表中 ParentCategoryId 是 ServiceCategoryId 它是父类别 我的类别可以有第 n 级层次结构 因此我需要使用树视图控件来呈现它 我怎样才能做到这一点 Thanks 你可以使用分层数据模板 http
  • gem 无法访问 ruby​​gems.org

    我有一个带有 Rackspace 的服务器 用于一些 Ruby 站点 当我尝试时bundle install在一个新网站上我得到 Retrying download gem from http rubygems org due to err
  • Dart 从 UInt8List 获取扩展

    我正在使用该包图像选择器 https pub dev packages image picker接受来自用户的图像 这会产生 PickedFile 和字节数组 由于图像随后被上传 我想知道如何从字节数组中猜测 mime 类型 PickedF
  • conio.h 不包含 textcolor()?

    我一直在考虑在我用 C 编写的 DOS 程序中使用颜色 有人告诉我conio h有textcolor 函数 但是当我在代码中使用它时 编译器 链接器会向我抛出错误 说我对该函数有未定义的引用 Does conio h真的有这个功能还是有人告
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover