4

除了当我上传一个文件并给它自己的名字(通过 html 表单中的文本字段)“Åäöô - KARL”之外,一切都工作得很好。

我为我的网站制作了一个自定义文件上传/处理程序/cms,除了文件上传之外,一切正常。

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

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

我试过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 字符的用户输入?

4

1 回答 1

4

众所周知,PHP 文件系统函数会破坏非 ASCII 文件名。

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

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

于 2013-03-03T15:02:36.883 回答