Table des matières
Symptômes du problème
La raison du problème
Solution
Option 1 : Conversion manuelle de l'encodage
方案二:修改PHP配置文件
Maison développement back-end Problème PHP Que dois-je faire si j'obtiens une erreur lors du téléchargement d'images avec des caractères chinois en PHP ?

Que dois-je faire si j'obtiens une erreur lors du téléchargement d'images avec des caractères chinois en PHP ?

Apr 11, 2023 am 09:16 AM

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

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

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

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自动进行编码转换,从而避免了手动编码转换的过程。具体操作如下:

  1. 找到php.ini配置文件,位置可能会因不同系统而有所不同。
  2. 打开php.ini文件,找到以下两行:

    ; Default charset for auto content type. 
    ; http://php.net/default-charset 
    default_charset = "UTF-8"
    Copier après la connexion
  3. ; 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
  4. 保存php.ini文件,重启Web服务器。

通过以上操作,我们就成功修改了PHP的配置文件,让PHP自动进行编码转换,解决了上传带中文的图片报错的问题。这种方法比较方便,但是需要注意的是,在使用此方法之前,需要确保服务器上已经安装了Suhosin

Option 2 : Modifier le fichier de configuration PHP

Nous pouvons modifier le fichier de configuration PHP et laisser PHP effectuer automatiquement la conversion de l'encodage, évitant ainsi le processus de conversion manuelle de l'encodage. Les opérations spécifiques sont les suivantes :

  1. Trouver le fichier de configuration php.ini L'emplacement peut varier en fonction des différents systèmes.
  2. Ouvrez le fichier php.ini et recherchez les deux lignes suivantes : 🎜rrreee
  3. 🎜Ajoutez après la ligne  ; Jeu de caractères par défaut pour le type de contenu automatique. Le contenu suivant : 🎜rrreee
  4. Enregistrez le fichier php.ini et redémarrez le serveur web.
🎜Grâce aux opérations ci-dessus, nous avons réussi à modifier le fichier de configuration PHP, permettant à PHP d'effectuer automatiquement la conversion de l'encodage, et à résoudre le problème des erreurs lors du téléchargement d'images avec des caractères chinois. Cette méthode est plus pratique, mais il convient de noter qu'avant d'utiliser cette méthode, vous devez vous assurer que l'extension 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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

PHP 8 JIT (juste à temps) Compilation: comment cela améliore les performances. PHP 8 JIT (juste à temps) Compilation: comment cela améliore les performances. Mar 25, 2025 am 10:37 AM

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.

OWASP Top 10 PHP: Décrivez et atténue les vulnérabilités communes. OWASP Top 10 PHP: Décrivez et atténue les vulnérabilités communes. Mar 26, 2025 pm 04:13 PM

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.

Téléchargements de fichiers sécurisés PHP: prévention des vulnérabilités liées au fichier. Téléchargements de fichiers sécurisés PHP: prévention des vulnérabilités liées au fichier. Mar 26, 2025 pm 04:18 PM

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.

Encryption PHP: cryptage symétrique vs asymétrique. Encryption PHP: cryptage symétrique vs asymétrique. Mar 25, 2025 pm 03:12 PM

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é.

Authentification PHP & amp; Autorisation: mise en œuvre sécurisée. Authentification PHP & amp; Autorisation: mise en œuvre sécurisée. Mar 25, 2025 pm 03:06 PM

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é.

Protection PHP CSRF: comment empêcher les attaques du CSRF. Protection PHP CSRF: comment empêcher les attaques du CSRF. Mar 25, 2025 pm 03:05 PM

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.

Comment récupérer les données d'une base de données à l'aide de PHP? Comment récupérer les données d'une base de données à l'aide de PHP? Mar 20, 2025 pm 04:57 PM

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

Quel est le but des déclarations préparées en PHP? Quel est le but des déclarations préparées en PHP? Mar 20, 2025 pm 04:47 PM

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

See all articles