当前位置: 首页 > 知识库问答 >
问题:

带有重音符号的PHP未知编码

慕容劲
2023-03-14

我有一些文件夹/文件读取与PHP真的麻烦。

我对一个文件夹和一个特定文件进行扫描,其中有一个名字,上面写着:“BAILÉN”。当我做“回声”时,它显示“BAILE'N”。最大的问题是php无法识别该文件。函数包括文件、目录、文件、重命名、扫描。。。失败。

我尝试了utf8_编码、解码、iconv,但使用了大量字符集,但没有任何效果。

这是一个名为:

https://mega.nz/#!W34XXa7Z!89NYKRBXkx3u-uaSYZd_E2LijDdzIf3trIUu8UrHE18

PHP版本5.6。12

非常感谢(如果我的英语不好,很抱歉)

编辑:

如果有人感兴趣。

我的一个合作伙伴开发了一个小型的C#应用程序来替换有问题的字符(C#函数识别文件)

我能够用hex2bin和bin2hex替换有问题的char。但是不管我做了什么,PHP函数都不能识别文件。

我认为php函数在这些字符上有问题,我无能为力。

共有1个答案

尉迟鑫鹏
2023-03-14

这是因为你正遇到Unicode规范陈述的喜悦。

有更多的方式来表现“É”的性格。utf-8'C3 89'大写字母E中的U 00C9,带有尖锐的重音。或U 0045 U 0301大写字母E变音符号锐重音Utf-8'45 cc 81'。你在第二种情况下。

有一种方法可以检查这个问题:尝试使用U 00C9点代码查找“BAILÉN”

自PHP 5.3.0以来,有一个可用的类及其静态函数,旨在解决这些问题:http://php.net/manual/en/class.normalizer.php
http://php.net/manual/en/normalizer.normalize.php

顺便说一下,文件名存储机制依赖于文件系统和操作系统。如果在Linux上运行ext*fs上的代码,在whatver上运行*BSD,或者在Windows上运行NTFS,则结果可能会有所不同。

 类似资料:
  • 我是AWS DataPipeline的新手。我创建了一个成功的datapipeline来将所有内容从RDS拉到S3 bucket。一切都管用。我在S3 bucket中看到了我的。csv文件。但我在表中存储西班牙语名称,在csv中,我看到的是“García”而不是“García”

  • 我将tinyMCE与一些ajax函数一起使用。我有自己的按钮来保存内容,当用户使用按下它时,我会获取内容并将其发送到服务器。我还使用自己的bbcode插件在保存之前将内容从html转换为bbcode。但问题是当用户使用一些重音字符时,如会将其转换为。我尝试使用,但在本例中bbcode不起作用。意思是从 Wir Müssen uns Treffen

  • 问题内容: 我正在尝试用普通的替换字符替换重音字符。以下是我目前正在做的事情。 这给了我: 上面给了我我想要的输出是。 谁能帮助我解决我的问题? 问题答案: 我已经根据答案中列出的变体尝试了各种方法,但以下方法可行:

  • 问题内容: 如何从字符串中删除重音符号?尤其是在IE6中,我有类似以下内容: 但是IE6困扰着我,似乎不喜欢我的正则表达式。 问题答案: 使用ES2015 / ES6 String.Prototype.Normalize(), 这里发生两件事: 根据Unicode规范形式,将组合的字形分解为简单的字形。在中端起来表示为+ 。 现在,使用正则表达式字符类来匹配U + 0300→U + 036F范围,

  • 问题内容: 我无法在Redis数据库中设置和检索带有重音符号的字符串。 带重音符号的字符被编码,如何将它们放回原处? 问题答案: Redis服务器本身将所有数据存储为二进制对象,因此它不依赖于编码。服务器将只存储客户端发送的内容(包括UTF-8字符)。 以下是一些实验: c3a9是’é’char的表示。 实际上,数据已正确存储在Redis服务器中。但是,当它在终端中启动时,Redis客户端会解释输

  • 问题内容: 我重写了URL,以包括用户生成的travelblogs的标题。 我这样做是出于URL的可读性和SEO的目的。 第一个整数是id,其余的对我们来说是人类(但与请求资源无关)。 现在,人们可以编写包含任何UTF-8字符的标题,但URL中不允许使用大多数字符。我的听众通常是说英语的,但自从旅行以来,他们喜欢添加诸如 在Linux上使用PHP进行翻译以显示在URL中的正确方法是什么。 到目前为