PHP - Gestion des noms de fichiers UTF-8 lors du téléchargement
Lorsque vous traitez des téléchargements contenant des noms de fichiers UTF-8, il peut être difficile de s'assurer que les caractères sont conservés avec précision. Ceci est particulièrement pertinent pour les langues comme le vietnamien qui utilisent des signes diacritiques et des caractères non latins.
En PHP, la gestion des noms de fichiers UTF-8 nécessite des considérations particulières, car les fonctions du système de fichiers peuvent ne pas les prendre en charge de manière native. Comme le montre l'exemple de code fourni :
<code class="php"><?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); } } ?></code>
Ce code tente de télécharger un fichier nommé vietnamien, "Tên Tệp Tiếng Việt.JPG". Cependant, une fois téléchargé, le nom du fichier résultant sur l'ordinateur est rendu comme "Tên Tệp Tiếng Việt.JPG" en raison d'une gestion incorrecte des caractères.
Pour résoudre ce problème, il est Il est nécessaire de convertir le nom du fichier en page de codes du système avant de le gérer dans les fonctions du système de fichiers PHP. La page de codes est un paramètre qui définit les caractères disponibles dans le système d'exploitation.
En fonction de votre système d'exploitation spécifique et de sa page de codes par défaut, il existe deux solutions potentielles :
Option 1 : Limiter les caractères du nom de fichier
Cela implique de limiter les caractères du nom de fichier à ceux pris en charge par la page de codes du système, généralement ASCII (437) dans votre cas. Bien que cela garantisse que le nom de fichier est préservé avec précision, cela restreint l'utilisation de certains caractères vietnamiens.
Option 2 : Modifier la page de code système
Cela nécessite de modifier le code système. page en vietnamien (1258) via les paramètres régionaux du Panneau de configuration. Une fois la modification effectuée, convertissez le nom de fichier en CP1258, ce qui permet une gestion appropriée par les fonctions du système de fichiers PHP.
<code class="php">$fn2 = iconv("UTF-8","cp1258", $base_dir . $fn);</code>
En choisissant l'une ou l'autre de ces approches, vous pouvez vous assurer que les noms de fichiers UTF-8 vietnamiens sont traités correctement. lors des téléchargements en PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!