Table des matières
 Comment gérer UTF-8 au niveau PHP
Comment gérer UTF-8 dans les opérations d'E/S sur les fichiers
Meilleures pratiques pour Mysql et UTF-8
Meilleures pratiques pour les navigateurs et UTF-8
Meilleures pratiques pour les systèmes d'exploitation et UTF-8
Maison développement back-end tutoriel php Meilleures pratiques pour PHP et UTF-8

Meilleures pratiques pour PHP et UTF-8

Jan 23, 2017 pm 03:08 PM

Cet article est la deuxième partie des connaissances liées à "PHP, chaînes, encodage, UTF-8". Conclusion d'abord - Utilisez l'encodage UTF-8 dans tous les aspects de PHP .

Le niveau de langage PHP ne prend pas en charge le jeu de caractères Unicode, mais la plupart des problèmes peuvent être résolus via l'encodage UTF-8.

La meilleure pratique est de connaître clairement l'encodage d'entrée (le détecter si vous ne le savez pas), de le convertir uniformément en encodage UTF-8 en interne, et l'encodage de sortie est également uniformément encodage UTF-8.

 Comment gérer UTF-8 au niveau PHP

Lors de l'utilisation du jeu de caractères Unicode, assurez-vous d'installer l'extension mbstring et d'utiliser la fonction correspondante au lieu de la fonction de chaîne native. Par exemple, si un fichier est codé en code PHP UTF-8 et qu'il est incorrect d'utiliser la fonction strlen(), veuillez utiliser la fonction mb_strlen() à la place.

La plupart des fonctions de l'extension mbstring doivent être traitées en fonction d'un encodage (encodage interne). Veuillez vous assurer d'utiliser l'encodage UTF-8 de manière uniforme. La plupart de ces éléments peuvent être configurés dans PHP.INI.

À partir de PHP 5.6, la configuration default_charset peut remplacer mbstring.http_input, mbstring.http_output.

Une autre configuration importante est mbstring.langue. La valeur par défaut est Neutre (UTF-8).

Notez que l'encodage de fichier et l'encodage interne de l'extension mbstring ne sont pas le même concept.

En résumé :

  • Utilisez autant que possible UTF-8 pour les parties de PHP.INI qui impliquent l'extension mbstring.

  • Veuillez utiliser la fonction d'extension mbstring au lieu de la fonction d'opération de chaîne native.

  • Lorsque vous utilisez des fonctions associées, assurez-vous de comprendre l'encodage des caractères que vous utilisez. Lorsque vous utilisez les fonctions correspondantes, affichez les paramètres d'encodage UTF-8, tels que htmlentities Le troisième paramètre. de la fonction () est écrite en UTF-8.

Comment gérer UTF-8 dans les opérations d'E/S sur les fichiers

Voici un exemple, si vous souhaitez ouvrir un fichier mais ne savez pas quel encodage le contenu du fichier c'est-à-dire, que devez-vous faire ?

La meilleure pratique consiste à convertir uniformément en UTF-8 lors de l'ouverture, puis à reconvertir l'encodage d'origine après avoir modifié le contenu et à l'enregistrer dans le fichier. Regardez le code :

if ( mb_internal_encoding()!="UTF-8") {
        mb_internal_encoding("UTF-8");
}
 
$file = "file.txt"; //一个编码为gbk的中文文件
$str= file_get_contents($file);
//不管来源是什么编码,统一显示的时候转换为 UTF-8
 if (mb_check_encoding($str,"GBK"))
    $str =  mb_convert_encoding($str,"UTF-8",“GBK”);
 
$str ="修改内容";
$str =  mb_convert_encoding($str,$srcbm,"UTF-8"); //原样转回去
file_put_contents($file,$str);
Copier après la connexion

Meilleures pratiques pour Mysql et UTF-8

C'est relativement simple. Tout d'abord, assurez-vous que votre Mysql est UTF-8. Ensuite, le client Mysql conserve également UTF-8 lors de la connexion. Plus précisément en PHP, lorsque l'extension imysql ou PDO se connecte à Mysql, UTF-8 est défini comme codage de connexion. Si les deux côtés sont cohérents, vous ne rencontrerez généralement pas de problèmes.

Meilleures pratiques pour les navigateurs et UTF-8

Ceci est également relativement simple, c'est-à-dire que si votre contenu de sortie est une page Web, alors la sortie de votre traitement de chaîne doit toujours être conservée au format UTF- 8 ; en même temps, le default_charset est également clairement défini sur UTF-8 dans PHP.INI ; la balise Meta du HTML est également clairement marquée comme UTF-8 ;

Tout va bien maintenant ? Non, bien que le serveur et le navigateur permettent aux utilisateurs d'utiliser l'encodage UTF-8, le comportement de l'utilisateur n'est pas contraignant. Il peut saisir des caractères dans d'autres encodages ou télécharger des fichiers. dans un autre encodage, alors que dois-je faire ? L'encodage de l'utilisateur peut être détecté via les fonctions mb_http_input() et mb_check_encoding() puis converti en UTF-8 en interne. Assurez-vous qu'à tous les niveaux, le traitement final est un encodage UTF-8. En d’autres termes, vous avez besoin d’un moyen de savoir quel est le codage de votre entrée, et le codage de la sortie de contrôle après traitement est UTF-8.

Il est déconseillé d'utiliser la directive mbstring.encoding_translation et la fonction mb_detect_encoding(). M'a torturé pendant une demi-journée.

Meilleures pratiques pour les systèmes d'exploitation et UTF-8

En raison des systèmes d'exploitation, PHP dispose de mécanismes de traitement différents lors du traitement des noms de fichiers Unicode.

Sous Linux, le nom du fichier est toujours codé en UTF-8, tandis que dans l'environnement Windows chinois, le nom du fichier est toujours codé en GBK.

Illustrons avec un exemple :

//命令行程序函数,运行在中文版 Windows 10 操作系统 ,文件编码为 UTF-8
 function filenameexample() {
    $filename = "测试.txt" ;
    $gbk_filename = iconv("UTF-8","GBK",$filename);
    file_put_contents($gbk_filename, "测试");
    echo file_get_contents($gbk_filename);
}
 function scandirexample() {
    $arr = scandir("./tmp");
    foreach ($arr as $v) {
        if ($v == "." || $v =="..")
            continue ;
        $filename = iconv( "GBK","UTF-8",$v ) ;
        $content = file_get_contents("./tmp/" . $v );
    }
}
Copier après la connexion

Si vous ne souhaitez pas écrire un programme compatible avec Windows et Linux, vous pouvez urlencoder le nom du fichier, tel que :

function urlencodeexample() {
   $filename = "测试2.txt" ;
   $urlencodefilename = urlencode($filename) ;
   file_put_contents($urlencodefilename, "测试");
   echo file_get_contents($urlencodefilename);
}
Copier après la connexion

Lorsque vous utilisez PHP pour télécharger des fichiers via la fonction header(), vous devez également prendre en compte le navigateur et le système d'exploitation (la plupart des gens utilisent Windows). Pour Chrome, l'encodage du nom du fichier de sortie peut être UTF-8. , et Chrome convertira automatiquement le nom de fichier en encodage GBK.

Pour les versions inférieures d'IE, il hérite de l'environnement du système d'exploitation, donc si le nom du fichier téléchargé est chinois, il doit être converti en codage UTF-8, sinon l'utilisateur verra un fichier tronqué lors du téléchargement. . Expliquez par le code :

$agent=$_SERVER["HTTP_USER_AGENT"];
if(strpos($agent,'MSIE')!==false  {
    $filename = iconv("UTF-8","GBK","附件.txt");
    header("Content-Disposition: attachment; filename=\"$filename\"");
}
Copier après la connexion
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 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
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)

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Expliquez le concept de liaison statique tardive en PHP. Expliquez le concept de liaison statique tardive en PHP. Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Mar 28, 2025 pm 05:11 PM

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

Comment envoyer une demande post contenant des données JSON à l'aide de la bibliothèque Curl de PHP? Comment envoyer une demande post contenant des données JSON à l'aide de la bibliothèque Curl de PHP? Apr 01, 2025 pm 03:12 PM

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...

Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Apr 03, 2025 am 12:04 AM

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Apr 06, 2025 am 12:02 AM

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

See all articles