簡體   English   中英

通過PHP表單上傳文件,文件名的UTF編碼錯誤

[英]Uploading files via PHP form, UTF-encoding error of filename

除了當我上傳文件並給它自己的名字(通過html格式的文本字段)“Åäöô - KARL”時,一切都工作正常。

我為我的網站制作了一個自定義的fileupload / handler / cms,除了文件上傳時,一切正常。

當我通過我的ftp程序直接查看文件上傳目錄時,文件名突然“Ã...äöÃ'-KARL”。

  • 我在每個頁面的開頭用<meta charset="UTF-8" />運行html5
  • 我用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文件名。

我建議你utf8_[en/de]code /轉換所有非ASCII字符,或者,如果不可能,嘗試utf8_[en/de]code

另請參見如何處理無效UTF-8字符的用戶輸入?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM