通过PHP表单上传文件,文件名utf编码错误



一切都很好,除了当我上传一个文件,并给它自己的名字(通过一个html表单的文本字段)"Åäöô - KARL".

我做了一个自定义的fileupload/handler/cms为我的网站和一切工作,除了当文件上传。

当我通过ftp程序直接查看文件上传目录时,文件名突然变成了"Åäöô- KARL"。

  • 我运行html5与<meta charset="UTF-8" />在每个页面的开始
  • 我编码时编写代码与UTF-8没有BOM

我试过iconv(),有什么我错过了吗?我怀疑它是在html表单$_POST['name_of_file']和当我运行命令

之间
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_POST['name_of_file'])

进度:我实际上做了一个"utf8_decode",现在文件被保存为正确的名称,它在我的网站上显示奇怪,所以当我想显示它时,我必须对它进行编码。

无论如何,要绕过必须键入utf8_encode和utf8_decode到处??

对于其他人,这篇文章可能会有所帮助:如何处理无效的UTF-8字符的用户输入?

PHP文件系统函数已知会混淆非ascii文件名。

我建议您剥离/转换所有非ascii字符,或者,如果这是不可能的,尝试utf8_[en/de]code

请参见如何处理用户输入的无效UTF-8字符?

最新更新