PHP 检测文件系统编码/保存具有非拉丁文件名的文件

2023-11-25

我需要使用 PHP 将非拉丁文件名的文件保存在文件系统上。

我想让这个工作跨平台。我如何知道可以使用什么编码来写入文件?我知道许多现代文件系统都是基于 UTF-8 的(这是正确的吗?),但我怀疑 Windows XP 是基于 UTF-8 的。

那么,是否有一套稳健的检测机制呢?


不是您问题的答案,但如果您不需要在文件系统级别执行大量操作(例如搜索、排序...),那么对于中概述的问题有一个很好的跨平台解决方法这个问题: URLEncode()ing 文件名。

Hörensägen.txt 

变成

H%c3%b6rens%c3%a4gen.txt

它应该可以在任何文件系统中安全使用,并且能够映射任何 UTF-8 字符。

我发现这比尝试“本地”处理主机操作系统的功能要好得多,后者肯定会很复杂且容易出错(除了操作系统差异之外,我确信各种文件系统格式 - FAT16、FAT32、NTFS 、extFS 版本 1/2/3.... 有自己的一套规则需要注意。)

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

PHP 检测文件系统编码/保存具有非拉丁文件名的文件 的相关文章

  • 用于监视文件夹和更新数据库的 Python 守护进程

    这专门用于管理 MP3 文件 但它应该可以轻松地适用于任何包含大量文件的目录结构 我想找到或编写一个守护程序 最好用Python 来监视一个包含许多子文件夹的文件夹 这些子文件夹都应该包含X个MP3文件 每当添加 更新或删除文件时 它都应该
  • 如何在 PHP 中打开从第 X 行到第 Y 行的文件?

    我在 PHP 文档中看到的最接近的是 fread 给定的长度 但这并没有指定从哪一行开始 还有其他建议吗 是的 您可以轻松地做到这一点SplFileObject seek http de php net manual en splfileo
  • 允许跨域ajax请求

    在我的项目中 我需要允许其他人向我的脚本发送 ajax 请求 因此 外部请求可能来自其他网站和域 也可能来自浏览器扩展 我在脚本顶部简单地添加了这两行 让他们执行此操作 header Access Control Allow Origin
  • 这段 PHP 代码是否会导致其他人的 Apache 崩溃?

    preg match all a str repeat a 1000 matches 编辑 稍微更改正则表达式以使其更简单 同时仍然崩溃 我在 PHP 5 3 5 和 Apache 2 0 上运行它 它使服务器崩溃 如果我将 339 更改为
  • PHPUnit:当将类型作为第二个参数作为非字符串传递时,assertInstanceOf() 不起作用

    我需要检查变量是否是User type User是我的班级 user我的对象 this gt assertInstanceOf user User 这是行不通的 我有以下错误 use of undefined constant User a
  • 为什么要使用 XML 解析器?

    I m a somewhat经验丰富的 PHP 脚本编写者 但是我只是专注于解析 XML 和所有这些好东西 我似乎无法理解为什么人们会使用单独的 XML 解析器而不是仅仅使用explode函数 看起来就这么简单 这是我一直在做的事情 假设路
  • PHP 中的变量 $this 意味着什么?

    我看到变量 this一直用PHP 但我不知道它有什么用 我个人从未使用过它 有人可以告诉我变量如何 this在 PHP 中工作吗 它是对当前对象的引用 最常用于面向对象的代码中 参考 http www php net manual en l
  • 使用可执行文件的完整路径并以管理员身份运行时,Windows 10 无法访问指定的设备、路径或文件

    Note 我已将目录替换为a和 exe 与b exe我重复了我所做的每一个测试 以确保它不是打字语法 我有一段非常简单的代码 它可以在 Windows XP 到 Windows 7 上完美运行 var processPath c a b e
  • 我可以为我的记录器使用静态类吗?

    最近我被告知静态类 方法是邪恶的 以我的 Logger 类为例 class Logger private static logs array public static function add msg self logs msg publ
  • Magento - 将媒体库属性添加到产品平板中

    如何将 media gallery 属性类型添加到产品平面表中 以便可以在产品列表中使用它 可以通过将 用于产品列表 定义为 是 来添加它们 完成此操作后 您将需要重新索引产品平面 编辑 请参阅解决方案以获取最终答案 Source 我可以向
  • 如何正确使用 Bearer 代币?

    我正在制作一个授权系统PHP 我遇到了传递 JWT 令牌的承载方案 我阅读了 RFC 6750 1 我有以下疑问 这如何提高安全性 成功授权和登录后 服务器在其主体中使用 JWT 令牌响应客户端 现在当客户端发出另一个请求时 我不清楚如何实
  • Ruby:如何将文件保存为 UTF-16 Little Endian

    我想用UTF 16 Little Endian将 保存到txt文件中 我通过一些方式进行了测试 1 下面的编码是UTF 8 RegisterMark 174 pack U file File new C Output txt w file
  • 如何向用户提供 Ajax POST 响应作为下载?

    我正在尝试在包含帐户信息的现有页面中包含 vCard 导出功能 丑陋的方法包括 1 向同一页面提交表单 处理它并重新渲染整个页面 或者 2 针对页面上的 iframe 进行 GET 我真的很想避免这两种情况 但我可能必须使用 2 来实现目标
  • 无法从 localhost/xampp 发送邮件

    无法连接到 mail google com 端口 587 上的邮件服务器 请验证您的 SMTP 和 smtp port 设置php ini or use ini set 我将 xampp php ini 和 sendmail ini 文件配
  • 你能帮助我更好地理解 PHP 类吗?

    我是一个学习速度很慢的人 我想在编码方面 我已经学习 PHP 几年了 但我仍然不理解类 所以是时候我付出一些努力 至少更好地理解它们了 我凡事都使用函数 人们经常在这里对我发表评论 他们不敢相信我有一个社交网站 而且我不使用课程 我真的不明
  • 尝试加载 php_oci8.dll 时 PHP 启动时出现警告

    我正在使用 XAMPP 并尝试为 sql 配置 Oracle 连接 我取消了该行的注释extension php oci8 dll一开始出现错误 缺少oci dll 但后来我从Oracle网页下载了instantclient 我尝试过版本
  • PHP 会话混乱

    好吧 我已经很困惑了 我有一个存储在会话中的对象 我可以向该对象添加项目 到目前为止非常简单 我像这样初始化对象 template new Template mysqli SESSION template serialize templat
  • 在cakephp中调用函数

    public function data if old status prev lat lat prev long long if status Village Unknown exec query else if status Town
  • php 32位日期解析1901年12月13日之前的日期

    我很高兴使用strtotime http www php net manual en function strtotime php在我的开发机器上解析日期 其中一些日期是 1800 年代 一个极端的例子是 1500 年代 但我的开发机是64
  • 错误 1366 (HY000):整数值不正确:第 1 行的列“id”的“”[已关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 My code sql INSERT INTO static table name sql join array key

随机推荐

  • 多部分文件最大大小异常-Spring Boot嵌入式tomcat

    我已将最大文件大小设置为 multipart maxFileSize 1mb multipart maxRequestSize 1mb 这是我的控制器 RequestMapping method RequestMethod POST pro
  • 如何为Django模型生成HASH

    我正在尝试为我的 10 位 Django 模型生成唯一的 HASH 值 我已经尝试过这些方法 但出现此错误 return Database Cursor execute self query params django db utils I
  • 为什么这个循环的时间复杂度是非线性的?

    为什么这个循环的时间复杂度是非线性的并且为什么这么慢 循环需要 38s for N 50k and 570s for N 200k 有没有更快的方法来做到这一点 Rprof 似乎表明写入内存非常慢 df lt data frame repl
  • 如何将 const char* API 导入到 C# 中?

    给定这个 C API 声明 如何将其导入到 C 中 const char stdcall z4LLkGetKeySTD void 我已经能够做到这一点 DllImport zip4 w32 dll CallingConvention Cal
  • LINQPad - 可以从命令行运行 linqpad 脚本吗?

    有没有办法从命令提示符 无 GUI 运行 LINQPad 脚本 如果是这样 LINQPad 可以方便地编写 C 脚本并从自动构建中调用它 LinqPad 的 lprun 已经到达 http www linqpad net lprun asp
  • 想要以字符串形式获取一周中的某一天,但给出了错误的日期

    我尝试使用以下代码将日期作为字符串获取 但它返回错误的字符串 我可以用这段代码修复它吗 private String getDayOfWeek int value String day switch value case 1 day Sun
  • 除了 processmessage 之外,我还能用什么来保持程序响应?

    我有一个可以运行很长时间扫描数据库的应用程序 在此过程中 我使用 processmessage 保持程序响应 当我的进度条更新并增加时 会触发此进程消息 在大多数情况下 这工作得很好 但是当数据库变得更大时 进度条需要更长的时间才能上升 1
  • jquery:-[对象对象]错误

    我有一个validation js文件 var name name ajax type get url test jsp data name name success function msg result hide result html
  • Filebeat 可以使用多个配置文件吗?

    我在一台服务器上运行多个应用程序 我想使用 filebeat 将每个日志发送到 Logstash 但是 为了配置管理 我希望能够为每个应用程序分别向 filebeat 添加配置 Logstash 从 a 读取其配置conf d目录 据我了解
  • 参数扩展后 zsh 没有被 IFS 分割

    这是我的代码 用于循环冒号分隔的值并执行某些操作 与每个值 f IFS for arg in 1 do echo arg arg done f foo bar baz 这在大多数 POSIX 兼容的 shell 中工作得很好 dash fo
  • C 中 ASCII 字符串的压缩

    我有一些 C 代码 将 ASCII 字符串作为四字节长度存储在内存中 后跟字符串 字符串长度范围为 10 250 字节 为了减少占用 我想动态地单独压缩每个字符串 仍然存储 压缩字符串的 长度 后跟压缩字符串 我不想在比单个字符串更大的范围
  • Spring @Transactional 注解属性优先级/继承

    如果是REQUIRED当调用方方法本身是事务性的时 如果它们不同 当前方法是否会覆盖封闭的事务属性 例如 rollbackFor 插图 Class A Transactional propagation Propagation REQUIR
  • mPDF 中的自定义字体无法加载

    我正在使用 mPDF 7 x 版本并尝试遵循此文档 https mpdf github io fonts languages fonts in mpdf 7 x html 我就是无法让它发挥作用 没有错误 但字体仍然是默认的 mPDF 字体
  • T4 用于夏普架构/Northwind 问题

    我刚刚下载了 Sharparchitecture Northwind 我正在尝试 让粗脚手架开始工作 除了添加之外我什么也没改变 缺少对该类库的引用 我试着跑 ScaffoldingGeneratorCommand tt 和我遇到了以下 3
  • 如何将 nohup 输出重定向到指定文件?

    我从其他示例中尝试过的所有内容似乎都不起作用 我正在尝试使用 nohup 运行我的应用程序 但将应用程序的输出附加到文件中 我尝试过以下一些方法 这些似乎都不起作用 nohup dotnet application dll gt out l
  • WCF 中的 HttpContext

    为了使用 httpContext 我更改了 app config 并添加了
  • PHP字典类?或者替代方案?

    基本上 我正在寻找的是某种在 PHP 中实现字典的类或方法 例如 如果我正在构建一个单词解密器 假设我使用了字母 a e l p p 排列的可能性是巨大的 我如何只显示那些实际的单词 苹果 苍白等 Thanks 经典的单词查找问题可以使用以
  • 实体框架创建空迁移,但坚持认为我的模型不同

    今天是悲伤的一天 今天我看到的第一件事是 EF 异常说 自数据库创建以来 支持 DomainContext 上下文的模型已发生变化 已经接近午夜了 我仍然看到这个错误 这是我职业生涯的终结 我很确定模型中没有任何变化 但错误却出现了 我尝试
  • 如何阻止 Apache 中的特定用户代理

    我正在配置我的 Django 应用程序以通过电子邮件向我发送错误 异常 通常没有问题 但我的电子邮件托管在 Office 365 上 并且 Microsoft 似乎会自动扫描和加载电子邮件中的 URL 结果是它命中了我的 Django 应用
  • PHP 检测文件系统编码/保存具有非拉丁文件名的文件

    我需要使用 PHP 将非拉丁文件名的文件保存在文件系统上 我想让这个工作跨平台 我如何知道可以使用什么编码来写入文件 我知道许多现代文件系统都是基于 UTF 8 的 这是正确的吗 但我怀疑 Windows XP 是基于 UTF 8 的 那么