php - UTF-8 编码文件名 PHP/MySQL 的奇怪行为
问题描述
我有一个文件,如果尝试将其名称保存到 mysql 数据库,它会保存奇怪的字符。
我的 MySQL 到处都有 utf8_unicode_ci。我的文件也是 UTF-8 和 html 元。
所以我做了一些测试。
1 - 我已经通过 ftp 上传文件并手动将文件重命名为之前的内容(Fichário2.pdf),基本上再次写重音字母“á”;
2 - 我再次将同一个文件发送到 ftp,令我惊讶的是,它并没有覆盖前一个文件,两者都具有“显然”相同的名称和口音
如果尝试对两个文件名进行 utf8_encode/decode,我会得到以下结果:
手动编写 Fichário2.pdf (utf8_encode) Fichário2.pdf (utf8_decode)
从文件名 FichaÌrio2.pdf (utf8_encode) Ficha?rio2.pdf (utf8_decode) 复制(它以这种方式保存到数据库中)
我试过 mb_detect_encoding(它说它是一个 UTF-8 字符串)和 mb_convert_encoding 无济于事。
如果我尝试使用 preg_match 或 mb_ereg_replace 他们将无法识别该字母。
任何帮助,将不胜感激。谢谢!
解决方案
推荐阅读
- javascript - 如何在反应路由器 3 中设置主应用程序外部的路由?
- java - JPA Left Join 正在生成返回太多行的 SQL
- regex - QRegExp 多行带引号
- java - 带有彗星处理器的此 URL 不支持 HTTP 方法 GET
- azure - Azure 搜索 - SearchMode:ANY - 未按预期工作
- php - 无法弄清楚 gmail pub sub 发送 JSON 通知
- hyperledger-fabric - 超级账本结构 java sdk 设置
- sphinx - 连字符在 Sphinx 中没有正确索引
- c++ - 不同类型的模板函数的实例化
- ios - 我想把 UIView 放在键盘上