php readdir 日语文件名问题

2024-03-28

我有以下代码

<?php
if ($handle = opendir('C:/xampp/htdocs/movies')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo $file."<br />\n";
        }
    }
    closedir($handle);
}
?>

当它确实有日语等 mb 语言时,它无法正确显示,而是显示为 kyuukyoku Choujin R ??????~?而不是 kyuukyoku Choujin R 研究极超人あ~る

无论如何要使其显示正确的名称或使其仍然可以被其他人下载?

谢谢你帮助我:)


我不能明确地说 PHP,但我怀疑这与 Python 2 的基本问题相同(后来添加了对 Unicode 字符串文件名的特殊支持)。

我相信 PHP 使用标准 C 库“open”-et-al 函数处理文件名,这些函数是基于字节的。在 Windows (NT) 上,它们尝试使用系统代码页对真实的 Unicode 文件名进行编码。对于西方机器来说,这可能是 cp1252(类似于 ISO-8859-1),对于日本机器来说,可能是 cp932(类似于 Shift-JIS)。对于系统代码页中不存在的任何字符,您将得到一个“?”字符,并且您将无法引用该文件。

为了解决这个问题,PHP 必须像 Python 3.0 一样,开始使用 Unicode 字符串作为文件名(以及其他所有内容),使用“_wopen”等函数在 Windows 下对文件名进行本机 Unicode 访问。我预计这会在 PHP6 中发生,但目前您可能已经吃饱了。您可以将系统代码页更改为 cp932 来访问文件名,但对于 Shift-JIS 之外的任何其他 Unicode 字符,您仍然会得到“?”字符,并且无论如何,您确实don't想让应用程序的内部字符串全部采用 Shift-JIS,因为这是一种非常糟糕的编码。

如果是您自己的脚本选择如何存储文件,我强烈建议在本地使用简单的基于主键的文件名,例如“4356”,将真实的文件名放入数据库中,并使用重写/尾随路径部分来提供文件网址。即使不必担心 Unicode,将用户提供的文件名保留在您自己的本地文件名中也很困难,并且会引发安全灾难。

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

php readdir 日语文件名问题 的相关文章

  • 如何在 PHP 中替换/转义 U+2028 或 U+2029 字符以阻止我的 JSONP API 崩溃

    好的 我正在运行一个公共 JSONP API 数据由我的 PHP 服务器提供 我刚刚读了这篇文章 JSON 不是的 JavaScript 子集 作者 Magnus Holm 2011 年 5 月 http timelessrepo com
  • PHP日期时间“下周星期三”给我星期一

    我正在尝试使用以下方法获取下周星期三的日期new DateTime next week wednesday 然而 它返回2016 12 19 00 00 00 000000今天是星期一 为什么会这样呢 如何得到正确的结果 我尝试在在线 PH
  • 将变量从 PHP 传递到 JavaScript 的有效方法[重复]

    这个问题在这里已经有答案了 有时我必须将一些变量从 PHP 传递到 JS 脚本 现在我是这样做的 var js variable 但这非常丑陋 我无法在 js 文件中隐藏我的 JS 脚本 因为它必须由 PHP 解析 处理这个问题的最佳解决方
  • 图片无法直接上传到相册

    我正在开发上传图片文件的应用程序 但图片不能直接上传到相册 上传之前始终必须经过批准 如何解决这个问题 问题 您想将这些照片添加到您的相册吗 下面的照片是从另一个应用程序上传的 您需要批准它们 你需要user photos允许直接上传到相册
  • 如何使用 PHP 创建动态页面标题

    大家好 我想知道是否有人可以帮助解决这个 PHP 问题 是否可以使用 H2 标记中的文本并使用它来动态填充页面标题 我还希望能够使用相同的技术将 H2 文本添加到元描述中 有人可以帮忙吗 如果您的 h2 文本是动态创建的 那么网页的其他部分
  • PHP:如何访问根目录之外的下载文件夹? [复制]

    这个问题在这里已经有答案了 我如何创建一个 PHP 脚本 页面 允许会员 买家下载存储在根目录之外的下载文件夹中的压缩文件 产品 我正在使用 Apache 服务器 请帮忙 谢谢 保罗 G 您可能会在 soac 提供的链接中找到一些更好的信息
  • 在 WooCommerce 订单和电子邮件中添加并显示自定义购物车项目数据

    我有一个名为彩票的自定义 woocommerce 产品类型 我需要在其上添加一个自定义选择字段 因为它不是可变产品 所以我添加了一个 一切工作正常 我在购物车和结帐中也获得了价值 但我无法在管理订单或订单邮件 客户和管理员 中获得价值 这是
  • Laravel 5 Eloquent 关系:无法修改/覆盖关系表属性

    我正在使用 Laravel 5belongsToMany使用中间数据透视表定义相关表的方法 我的应用程序正在使用雄辩的模型Tour and 旅游类别 在游览模型中我有 namespace App use Illuminate Databas
  • PHP DOM 获取节点值 html? (不剥离标签)

    我正在尝试使用nodeValue获取文件中div标签的innerhtml 但是此代码仅输出纯文本 并且似乎从div内部删除了所有html标签 我如何更改此代码以输出 div 的 HTML 内容而不是纯文本 并且还输出包装其子元素的主 div
  • PHP:从 array_values() 内的值中去除标签

    我想在用选项卡爆炸之前将标签从 array values 内的值中剥离出来 我尝试使用下面的这一行 但出现错误 output implode t strip tags array keys item 理想情况下 我想从值中去掉换行符 双空格
  • 生成 CloudFront 签名 URL 时性能缓慢

    我正在按照此示例使用 PHP 在 CloudFront 上创建签名 URLhttp docs aws amazon com AmazonCloudFront latest DeveloperGuide CreateURL PHP html
  • 使用 getJSON 未显示 JSON 数据

    document ready function getJSON news php parseInfo function parseInfo data alert data news undefined info html data news
  • 如何使用 PHP SoapClient 添加任意命名空间?

    如何使用 PHP SoapClient 添加任意名称空间 命名空间实际上并未在请求中使用 但我认为它阻止了我的消息被正确使用 WSDL 在这里 http abr business gov au abrxmlsearchRPC ABRXMLS
  • 如何从对应的数组值中获取数组键?

    您可以轻松地通过其键获取数组值 如下所示 value array key 但如果我有该值并且想要它的密钥怎么办 获得它的最佳方式是什么 你可以使用array search https www php net manual en functi
  • 如何使 WordPress 中的自定义模板充当受密码保护的页面?

    我正在使用自定义模板构建一个页面 问题是 我需要此页面受密码保护 或者至少可供登录用户访问 但即使我在 WordPress 管理的新页面部分中将其设置为此类 私人 密码保护 它也不会显示菜单项和内容 如果是私有的 或者它会立即显示页面内容
  • 如何在 Api-Platform 中按链接属性过滤结果?

    我有一个User实体和一个Organisation实体 存在关系ManyToOne之间Booking and User ORM ManyToOne targetEntity App Entity User inversedBy bookin
  • 尝试使用curl进行GET,发送的值允许为空

    我正在尝试使用curl 来执行一个简单的GET 其中包含一个名为redirect uri 的参数 被调用的 php 文件打印出 GET redirect uri 的空字符串 它显示 red 并且似乎没有发送任何内容 执行获取操作的代码 Ge
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f
  • 正则表达式检查确切的字符串是否存在,包括#

    新问题正如 Asaph 在上一个问题中所建议的 正则表达式检查确切的字符串是否存在 https stackoverflow com questions 2824291 regex to check if exact string exist
  • PDO 返回不正确但重复的数据。密钥不在数据库中。

    我刚开始使用 pdo 语句 所以可能是一些简单的东西 我还没有在 php net 上读过 查询数据库时我收到重复的结果 Result 0 gt Array umeta id gt 31 0 gt 31 user id gt 2 1 gt 2

随机推荐

  • 如何使用mysql和php获取排序行的位置

    我有一个存储高分以及玩家 ID 的表 我希望能够通过玩家 ID 提取记录 然后获取他们的分数在表中的排名或位置 意思是 基本上我希望能够说 你处于第 N 位置 纯粹基于玩家得分与所有其他得分的比较 例如 如果我位于第 46 位 那么对我来说
  • Chrome 更新 73 - Materialise CSS JS 触发错误

    在最新的 Chrome Update 73 之后 Materialize CSS 0 100 2 的日期选择器 时间选择器和下拉菜单不再工作 当您点击它时它会闪烁 然后消失 知道如何解决这个问题吗 我遇到过同样的问题 现在我做了一些更改以使
  • 如何使用 write 系统调用将 int 写入文件并完全按照写入方式读取它们?

    如何使用 UNIX 的 write 系统调用将 int float 或其他类型写入文件 我想这样做而不使用任何 lib 函数 例如fprintf or fwrite 我想使用文件描述符而不是FILE 再次打开后 文件必须完全按照写入的方式读
  • Java:同步实用程序

    我问这个纯粹是为了确定实施问题类的价值 您是否知道 Java 实用程序类采用非同步实例 使用反射来调查该实例 并返回 包装 在同步调用中的输入实例 即 为任何实例创建同步委托类的工厂 我喜欢乔恩 斯基特的回答 它只见树木而不见森林 但要回答
  • 将枚举序列化为从 Azure Function 返回的 JSON 中的字符串

    有没有办法配置 Azure Functions 如何将对象序列化为 JSON 作为返回值 我想使用字符串而不是整数作为枚举值 例如 给定以下代码 public enum Sauce None Hot public class Dish Js
  • 如何从vb.net代码向水晶报表传递参数

    我创建了一个水晶报告 交叉表 我没有使用任何数据集 而是使用水晶报表中的向导从我的数据库架构中调用过程 给出的提供程序是 Oracle 的 Microsoft OLEDB 提供程序 之后我提供了我的数据库凭据 即架构 用户名 密码 并选择了
  • 如何将 HTML 元素记录为 JavaScript 对象?

    使用 Google Chrome 如果您console log一个对象 它允许您检查控制台中的元素 例如 var a foo bar whiz bang console log a 这打印出来Object可以通过单击旁边的箭头进行检查 但是
  • window.scrollTo 在 Internet Explorer 11 中不起作用

    我希望在启动页面时滚动条默认位于顶部 但是下面的代码在 chrome 中工作正常 但在 IE11 中不行 如果我尝试调试脚本 滚动条位于顶部 document ready function window scrollTo 0 0 我在网上尝
  • Android Seekbar 有两个拇指

    这个问题的变体可以在互联网上找到 但没有答案 我想要一个带有两个拇指范围选择的搜索栏 我愿意自己编程 但缺乏 Android 经验 有人可以给我一些关于从哪里开始的指示吗 我的意思是 我知道我必须扩展一些东西 可能是进度条 但是我应该如何去
  • AngularJS 绑定中的数学函数

    有没有办法在 AngularJS 绑定中使用数学函数 e g p The percentage is Math round 100 count total p 这个小提琴显示了问题 http jsfiddle net ricick jtA9
  • 检查字符串是否包含整数

    您知道可以检查字符串是否包含整数的函数吗 我期望它的工作方式如下 holds int 23 should return true holds int 2 3 should return false holds int qwe should
  • 仅使用 Perl 核心运行单个脚本来自动安装缺少的模块的快速方法是什么?

    我继承了一个应该能够部署到其他服务器的项目 该项目有许多简单的模块依赖项 但这些依赖项可能并不存在于所有目标计算机上 因此 我希望能够运行一个命令行脚本来检查安装了哪些 Perl 模块 并尝试通过 CPAN 自动安装缺少的模块 由于这应该是
  • C# 套接字编程入门 - 最佳实践

    我在这里看到了很多关于套接字的资源 我相信他们都没有涵盖我想知道的细节 在我的应用程序中 服务器执行所有处理并向客户端发送定期更新 这篇文章的目的是涵盖开发套接字应用程序时所需的所有基本思想并讨论最佳实践 以下是您在几乎所有基于套接字的应用
  • 如何模拟Android操作系统卸载后台应用程序?

    出于测试目的 我需要轻松地重现 Android 系统决定保存状态并终止后台应用程序时的情况 就像通常出于内存优化目的所做的那样 事实上 我还需要测试当用户切换回这样一个已删除进程时的恢复过程 直接的方法是打开应用程序 然后打开更多其他任务
  • 如何让点击日历图标时弹出日历?

    我正在研究website http ferhan ferohost com 我想在点击日历图标时弹出日历 我用来放置的 HTML 代码开始日期 and End Date are div class dates div class start
  • Perl 6 规则中 .parse 锚点还是 :sigspace 首先?

    我有两个问题 我表现出的行为是否正确 如果是 它是否记录在某处 我在玩语法TOP方法 宣布为rule 它意味着字符串的开头和结尾锚点以及 sigspace grammar Number rule TOP d my strings 137 1
  • 异常:AXIS 引擎找不到要调用的目标服务! targetService 是 SecurityDepositServiceImpl

    我是 Web 服务新手 我使用 eclipse Bottom Up java Bean service 在现有项目中创建了一个 Web 服务 服务器是 Tomcat 6 Spring Framework 2 5 而不是使用 Maven 和
  • 编写接受一维和二维 numpy 数组的函数?

    我的理解是 numpy 中的一维数组可以解释为面向列的向量或面向行的向量 例如 具有形状的一维数组 8 可以被视为形状的二维数组 1 8 或形状 8 1 取决于上下文 我遇到的问题是 我编写的用于操作数组的函数往往在二维情况下可以很好地泛化
  • 我如何在 Windows 10 通用应用程序中使用 xsd.exe 生成的文件

    我正在使用 xsd exe 从 xsd 文件生成 cs 文件 但是 当我将文件添加到 Windows 10 通用空白应用程序时 我收到 System SerializedAttribute 和 System ComponentModel D
  • php readdir 日语文件名问题

    我有以下代码 当它确实有日语等 mb 语言时 它无法正确显示 而是显示为 kyuukyoku Choujin R 而不是 kyuukyoku Choujin R 研究极超人 无论如何要使其显示正确的名称或使其仍然可以被其他人下载