PHP上传图片时遇到中文乱码问题,通常是因为文件名或文件路径中的中文字符在传输或存储过程中没有正确编码或解码。这涉及到字符编码和文件系统的兼容性问题。
php.ini
)中关于字符编码的设置不正确。mb_convert_encoding
函数将文件名转换为UTF-8编码。mb_convert_encoding
函数将文件名转换为UTF-8编码。php.ini
文件中设置了正确的字符编码:php.ini
文件中设置了正确的字符编码:<?php
header('Content-Type: text/html; charset=utf-8');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$fileName = $_FILES['fileToUpload']['name'];
$fileName = mb_convert_encoding($fileName, 'UTF-8', 'auto');
$targetDir = 'uploads/';
$targetFile = $targetDir . basename($fileName);
if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $targetFile)) {
echo "The file " . htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
通过以上方法,可以有效解决PHP上传图片时中文乱码的问题。
领取专属 10元无门槛券
手把手带您无忧上云