PHP - Télécharger utf-8 nom de fichier

Je suis Vietnamienne et je veux télécharger un utf-8 nom de fichier comme

Tên Tệp Tiếng Việt.JPG

Voici mon code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>utf-8</title> 
</head> 

<body> 
<?php
    if(isset($_POST["submit"])) { 
       if($_FILES["upload"]["error"] > 0 ) echo "FILE ERROR!"; 
       else 
         { 
           $base_dir = "D:/"; 
           $fn = $_FILES["upload"]["name"]; 

           $fn2 = $base_dir.$fn;

           move_uploaded_file($_FILES["upload"]["tmp_name"],$fn2); 
         } 
     } 
?> 
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
  <input type="file" name="upload" id="upload" /> 
  <input type="submit" name="submit" id="submit" value="Send" /> 
</form> 
</body> 
</html> 

mais quand je télécharge ce que je vois sur mon ordinateur D:\ a un fichier comme

Tên Tệp Tiếng Việt.JPG

Comment résoudre que grâce

  • Sur Windows, vous pouvez utiliser iconv() pour la convertir en ucs2
  • J'essaie ` $fn2 = iconv("UTF-8","ucs2", $base_dir.$fn) ; "mais erreur iconv(): Mauvais jeu de caractères, de conversion de UTF-8' to ucs2" n'est pas autorisé ?
  • C'est UCS-2 en fait 🙂
  • j'ai modifier que pour $fn2 = iconv("UTF-8","UCS-2", $base_dir.$fn); mais je reçois l'erreur move_uploaded_file(): Filename cannot be empty .. et move_uploaded_file(): Unable to move 'E:\PHP\Xampp\tmp\php6B2C.tmp' ... ? ce qui est faux
  • Système d'exploitation que vous utilisez. Avec votre code de vérification, vous les paramètres système aussi parce que le code de la partie elle l'air bien, mais à l'os, je ne suis pas sûr de vous permettre toutes les choses
  • Je l'aide window8, anglais US clavier ?
  • Premières choses d'abord. Pouvez-vous echo le nom de fichier que vous recevez sur le serveur? Tester si le nom de fichier est téléchargé encodés en UTF-8? Parce que cette partie est susceptible de travailler. Le problème est de savoir comment PHP interagit avec le système de fichiers lors de l'écriture des fichiers, qui dépend fondamentalement de ce que le système de fichiers sous-jacent, ce qui peut être assez laid et complexe dans le cas de Windows. Si le nom de fichier est téléchargé fine en UTF-8, la question devient "comment écrire un nom de fichier en UTF-8", et la réponse peut ne pas être assez.

InformationsquelleAutor DeLe | 2013-08-13