首页 > 解决方案 > 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 他们将无法识别该字母。

任何帮助,将不胜感激。谢谢!

标签: phpmysqlutf-8

解决方案


推荐阅读