我正在做一个网页并且文件上传有问题,这会将文件名变音符号更改为一个奇怪的名称。
例如,当我上传名为“töö.docx”的文件并查看上传文件夹中的名称时,它会显示我的“tƶƶ.docx”。
当我在index.php中调出文件名时,它会显示正确的名称“töö.docx”。
但是在我进入上传文件夹并手动将名称“tƶƶ.docx”更改为“töö.docx”并在index.php中调出文件名后,它显示“t” .docx“这是错的。
以下是index.php上传的代码:
<form method="post" enctype="multipart/form-data">
<strong>File upload:</strong>
<small>(max 8 Mb)</small>
<input type="file" name="fileToUpload" required>
<input type="submit" value="Upload" name="submit">
</form>
这是上传控制器代码:
$doc_list = array();
foreach (new DirectoryIterator('uploads/') as $file)
{
if ($file->isDot() || !$file->isFile()) continue;
$doc_list[] = $file->getFilename();
}
$target_dir = "uploads/";
$target_file = $target_dir . basename( isset($_FILES["fileToUpload"]["name"]) ? $_FILES["fileToUpload"]["name"] : "");
$file = isset($_FILES["fileToUpload"]) ? $_FILES["fileToUpload"] : "";
$up_this = isset($_FILES["fileToUpload"]["tmp_name"]) ? $_FILES["fileToUpload"]["tmp_name"] : "";
$file_name = isset($_FILES["fileToUpload"]["name"]) ? $_FILES["fileToUpload"]["name"] : "";
if (!empty($file)) {
if(isset($_POST["submit"])) {
if (file_exists($file_name)) {
echo "File already exists.";
exit;
} else {
$upload = move_uploaded_file($up_this, $target_file);
if ($upload) {
echo "File ". '"' . basename($file_name). '"' . " has been uploaded";
} else if (!$upload) {
echo "Could not upload file";
exit;
}
}
}
}
我使用变量$ doc_list来调出index.php文件夹中文档的名称:
<div>
<?php if (!empty($doc_list)) foreach ($doc_list as $doc_name) { ?>
<tr>
<td><?= $doc_name ?></td>
</tr>
<?php } ?>
</div>
我已将网站字符集设置为utf-8。我仍然不知道为什么它没有用变音符号显示正确的文件名。
答案 0 :(得分:1)
尝试像这样添加accept-charset="UTF-8"
:
<form method="post" enctype="multipart/form-data" accept-charset="UTF-8">