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

coldplay.xixi
Libérer: 2023-03-02 18:00:01
original
3468 Les gens l'ont consulté

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");
Copier après la connexion

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");
Copier après la connexion

. 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"]);
Copier après la connexion

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;
Copier après la connexion

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"]));
Copier après la connexion

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" />
Copier après la connexion

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal