Maison  >  Article  >  développement back-end  >  Que dois-je faire si le nom d'un fichier chinois téléchargé par PHP est tronqué ?

Que dois-je faire si le nom d'un fichier chinois téléchargé par PHP est tronqué ?

coldplay.xixi
coldplay.xixioriginal
2020-07-18 14:33:573393parcourir

Solution au nom de fichier tronqué des fichiers chinois téléchargés par PHP : ajoutez des instructions pertinentes au milieu de la balise head du fichier HTML pour garder l'encodage unifié. Le code est [

Solution au nom de fichier tronqué des fichiers chinois téléchargés par php :

Méthode 1 : Je suppose que mon système provoquera peut-être des caractères tronqués lors de la création de fichiers chinois, alors j'ai réécrit le code :

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/测试数据.txt");

Le le résultat a été créé avec succès sans caractères tronqués. En d'autres termes, ce n'est pas un problème de système

Pensez-y, mon fichier php lui-même est codé en utf8, puis l'instruction

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/测试数据.txt");

. doit être codé en utf8, alors le fichier téléchargé avant Le nom n'est certainement pas codé en utf8, donc l'instruction suivante est définitivement fausse, car la chaîne source elle-même n'est pas codée en utf8 :

iconv("UTF-8","gbk//TRANSLIT",$_FILES["file"]["name"]);

Utilisez la fonction pour vérifier le encodage de la chaîne source :

$e=mb_detect_encoding($text, array(‘UTF-8’, ‘GBK’,’gb2312’));2 echo $e;

Le résultat est CP936, c'est-à-dire que l'encodage de la chaîne source est GBK

Essayez-le

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . iconv("gbk","UTF-8",$_FILES["file"]["name"]));

Le problème est résolu, pas plus. caractères tronqués

Méthode 2 : En fait, il existe une autre solution, qui est d'ajouter

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

au milieu de la balise head du fichier html pour que le l'encodage reste unifié et il n'est plus nécessaire de transcoder

Conclusion

  • L'utilisation de la fonction iconv peut résoudre le problème des noms de fichiers chinois tronqués . En fait, iconv peut résoudre divers problèmes tronqués causés par un encodage incohérent

  • Lorsque vous utilisez la fonction iconv, veuillez d'abord vérifier l'encodage de la chaîne source, sauf si vous avez déjà déterminé l'encodage. de la chaîne source.

  • Essayez de vous assurer que l'encodage de tous les codes est cohérent, utilisez la fonction iconv uniquement en dernier recours. >Essayez de vous plaindre, essayez de ne pas utiliser les noms de fichiers chinois comme noms de fichiers enregistrés sur le serveur, veuillez convertir le nom du fichier en votre propre nom de fichier (même s'il est anglais). Veuillez également convertir le nom du fichier)

  • Recommandations d'apprentissage associées :

    Programmation PHP du débutant au compétent

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn