在使用PHP通过POST form-data方式上传文件时,如果文件名包含中文字符,可能会出现乱码问题。这通常是因为服务器或脚本未正确处理编码导致的。常见原因是PHP默认以ISO-8859-1处理请求数据,而前端可能发送的是UTF-8编码。
解决方法如下:
1. 确保HTML表单设置`enctype="multipart/form-data"`,并使用UTF-8编码。
2. 在PHP中获取文件名后,用`mb_convert_encoding()`函数将文件名从ISO-8859-1转换为UTF-8,例如:
```php
$filename = mb_convert_encoding($_FILES['file']['name'], 'UTF-8', 'ISO-8859-1');
```
3. 如果仍无效,尝试检查服务器环境(如Nginx或Apache)是否正确配置了字符集支持。
以上方法可有效解决中文文件名乱码问题,确保文件名正常显示与存储。