


Que dois-je faire si j'obtiens une erreur lors du téléchargement d'images avec des caractères chinois en PHP ?
Lorsque vous utilisez PHP pour télécharger des fichiers, si le nom du fichier contient des caractères chinois, le téléchargement peut échouer. En effet, dans le protocole HTTP, les caractères chinois du nom de fichier doivent être codés pour être transmis correctement, et PHP n'effectue pas cet encodage par défaut, provoquant ainsi l'échec du téléchargement.
Maintenant, discutons de la façon de résoudre ce problème.
Symptômes du problème
Lorsque nous utilisons PHP pour télécharger des fichiers, si le nom du fichier téléchargé contient des caractères chinois, le téléchargement peut signaler une erreur. Le message d'erreur est généralement constitué de caractères tronqués incompréhensibles, et la cause de l'erreur ne peut pas être. clairement souligné.
Par exemple, nous essayons de télécharger un fichier nommé "Test Image.jpg". Pendant le processus de téléchargement, si le nom du fichier contient des caractères chinois, tels que "Test Image (Chinese).jpg", le téléchargement peut échouer et un Le message d'erreur sera signalé comme suit :
Warning: move_uploaded_file(): Unable to move '/tmp/php12efan' to '/var/www/html/upload/测试图片(中文).jpg'
Vous pouvez voir que le nom du fichier dans le message d'erreur est tronqué et la cause de l'erreur ne peut pas être clairement indiquée.
La raison du problème
La raison de ce problème est que dans le protocole HTTP, les caractères chinois doivent être codés pour être transmis correctement. Lorsque vous utilisez PHP pour télécharger des fichiers, PHP convertira par défaut le nom du fichier téléchargé au format d'encodage ISO-8859-1, et les caractères chinois ne sont pas inclus dans l'encodage ISO-8859-1, donc des caractères tronqués apparaîtront.
Si nous regardons la requête HTTP téléchargée, nous pouvons voir que le nom du fichier téléchargé est comme ceci :
Content-Disposition: form-data; name="file"; filename="测试图片(中文).jpg"
Vous pouvez voir que le nom du fichier téléchargé n'est en aucun cas codé.
Solution
Il existe de nombreuses façons de résoudre ce problème. Nous proposons ici deux solutions courantes.
Option 1 : Conversion manuelle de l'encodage
Nous pouvons convertir manuellement l'encodage du nom de fichier téléchargé pour obtenir le nom de fichier correct. L'opération spécifique est la suivante :
$file = $_FILES['file']; $filename = iconv('UTF-8', 'ISO-8859-1', $file['name']); move_uploaded_file($file['tmp_name'], '/var/www/html/upload/' . $filename);
Dans le code ci-dessus, nous utilisons la fonction iconv
pour convertir le nom de fichier de l'encodage UTF-8 en encodage ISO-8859-1, obtenir le nom de fichier correct , puis Effectuer le téléchargement de fichiers. L’inconvénient de cette méthode est qu’elle est relativement lourde et nécessite une conversion manuelle du codage, ce qui n’est pas assez pratique. iconv
函数将文件名从UTF-8编码转换为ISO-8859-1编码,得到了正确的文件名,然后再进行文件上传。这种方法的缺点是比较繁琐,需要手动进行编码转换,不够方便。
方案二:修改PHP配置文件
我们可以修改PHP配置文件,让PHP自动进行编码转换,从而避免了手动编码转换的过程。具体操作如下:
- 找到php.ini配置文件,位置可能会因不同系统而有所不同。
-
打开php.ini文件,找到以下两行:
; Default charset for auto content type. ; http://php.net/default-charset default_charset = "UTF-8"
Copier après la connexion -
在
; Default charset for auto content type.
这一行的后面添加以下内容:; Add charset=utf-8 to Content-Type header for files with non-ASCII names ; that have been encoded using RFC 2231 suhosin.upload.unicode.semantics=1
Copier après la connexion - 保存php.ini文件,重启Web服务器。
通过以上操作,我们就成功修改了PHP的配置文件,让PHP自动进行编码转换,解决了上传带中文的图片报错的问题。这种方法比较方便,但是需要注意的是,在使用此方法之前,需要确保服务器上已经安装了Suhosin
- Trouver le fichier de configuration php.ini L'emplacement peut varier en fonction des différents systèmes.
- Ouvrez le fichier php.ini et recherchez les deux lignes suivantes : 🎜rrreee
- 🎜Ajoutez après la ligne
; Jeu de caractères par défaut pour le type de contenu automatique.
Le contenu suivant : 🎜rrreee - Enregistrez le fichier php.ini et redémarrez le serveur web.
Suhosin
a été installée sur le serveur. 🎜🎜Résumé🎜🎜Lorsque vous utilisez PHP pour télécharger des fichiers, si le nom du fichier téléchargé contient des caractères chinois, vous pouvez rencontrer un échec de téléchargement. Pour résoudre ce problème, vous pouvez effectuer manuellement la conversion de l'encodage, ou vous pouvez modifier le fichier de configuration PHP et laisser PHP effectuer automatiquement la conversion de l'encodage. Les deux méthodes ont leurs propres avantages et inconvénients, et vous pouvez choisir la méthode appropriée pour la résoudre en fonction. situation réelle. 🎜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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La compilation JIT de PHP 8 améliore les performances en compilant le code fréquemment exécuté en code machine, bénéficiant aux applications avec des calculs lourds et en réduisant les temps d'exécution.

L'article traite des 10 meilleures vulnérabilités de l'OWASP dans les stratégies PHP et d'atténuation. Les problèmes clés incluent l'injection, l'authentification brisée et les XS, avec des outils recommandés pour surveiller et sécuriser les applications PHP.

L'article traite de la sécurisation des téléchargements de fichiers PHP pour éviter les vulnérabilités comme l'injection de code. Il se concentre sur la validation du type de fichier, le stockage sécurisé et la gestion des erreurs pour améliorer la sécurité de l'application.

L'article traite du cryptage symétrique et asymétrique en PHP, en comparant leur aptitude, leurs performances et leurs différences de sécurité. Le chiffrement symétrique est plus rapide et adapté aux données en vrac, tandis que l'asymétrique est utilisé pour l'échange de clés sécurisé.

L'article examine la mise en œuvre d'authentification et d'autorisation robustes dans PHP pour empêcher un accès non autorisé, détaillant les meilleures pratiques et recommandant des outils d'amélioration de la sécurité.

L'article traite des stratégies pour prévenir les attaques du CSRF dans PHP, notamment en utilisant des jetons CSRF, des cookies de même site et une bonne gestion de session.

L'article discute de la récupération des données des bases de données à l'aide de PHP, couvrant les étapes, les mesures de sécurité, les techniques d'optimisation et les erreurs communes avec des solutions. COMMANDE CHAPITRE: 159

Les déclarations préparées dans PHP améliorent la sécurité et l'efficacité de la base de données en empêchant l'injection SQL et en améliorant les performances de la requête par compilation et réutilisation. Compilation de caractéristiques: 159
