Maison développement back-end tutoriel php Conseils de codage chinois PHP que vous devez connaître ?

Conseils de codage chinois PHP que vous devez connaître ?

Jul 06, 2017 am 10:52 AM
php 技巧 编码

Cet article présente principalement 4 conseils pratiques de codage chinois PHP. Après les avoir maîtrisés, vous n'aurez plus à vous soucier des problèmes de codage.

Le problème de l'encodage chinois dans la programmation PHP a troublé de nombreuses personnes. La raison de ce problème est en fait très simple. Chaque pays (ou région) stipule l'encodage de caractères défini pour l'échange d'informations informatiques, comme l'extension de. le code ASCII des États-Unis, le GB2312-80 de la Chine, le JIS du Japon, etc. En tant que base du traitement de l'information dans ce pays/région, les jeux de codage de caractères jouent un rôle important dans l'unification du codage. Les jeux de codage de caractères sont divisés en deux catégories selon la longueur : SBCS (Single Byte Character Set ) et DBCS (Double Byte Character Set). Dans les premiers logiciels (en particulier les systèmes d'exploitation), afin de résoudre le traitement informatique des informations de caractères locales, diverses versions localisées (L10N) sont apparues afin de se différencier, des concepts tels que LANG et Codepage ont été introduits. Cependant, en raison du chevauchement des plages de codes des différents jeux de caractères locaux, il est difficile d'échanger des informations entre eux ; le coût de la maintenance indépendante de chaque version localisée du logiciel est élevé. Par conséquent, il est nécessaire d’extraire les points communs du travail de localisation et de les traiter de manière cohérente afin de minimiser le contenu spécial du traitement de localisation. C'est ce qu'on appelle également l'internationalisation (118N). Diverses informations linguistiques sont en outre standardisées en tant qu'informations locales. Le jeu de caractères sous-jacent traité est devenu Unicode, qui contient presque tous les glyphes.

De nos jours, la plupart du traitement des caractères de base des logiciels aux caractéristiques internationales est basé sur Unicode. Lorsque le logiciel est en cours d'exécution, les paramètres de codage de caractères locaux correspondants sont déterminés en fonction des paramètres régionaux/Lang/Codepage du moment. , et sur cette base, gérer les caractères locaux. Lors du traitement, il est nécessaire d'effectuer une conversion entre Unicode et les jeux de caractères locaux, voire entre deux jeux de caractères locaux différents avec Unicode comme intermédiaire. Cette méthode est encore étendue dans l'environnement réseau, et toute information de caractère aux deux extrémités du réseau doit également être convertie en contenu acceptable en fonction des paramètres du jeu de caractères.

Problèmes d'encodage des jeux de caractères dans les bases de données

Les systèmes de bases de données relationnelles populaires prennent tous en charge l'encodage des jeux de caractères des bases de données, ce qui signifie que lors de la création d'une base de données, cela peut spécifiez ses propres paramètres de jeu de caractères et les données de la base de données sont stockées dans le codage spécifié. Lorsqu'une application accède aux données, il y aura une conversion de codage de jeu de caractères à l'entrée et à la sortie. Pour les données chinoises, le paramètre de codage des caractères de la base de données doit garantir l'intégrité des données. GB2312, GBK, UTF-8, etc. sont tous des codages de jeux de caractères de base de données facultatifs ; bien sûr, nous pouvons également choisir ISO8859-1 (8 bits), mais nous devons diviser un caractère chinois ou Unicode de 16 bits avant que l'application n'écrive. données. Divisez-les en deux caractères de 8 bits. Après avoir lu les données, vous devez fusionner les deux octets et identifier les caractères SBCS. Par conséquent, nous ne recommandons pas d'utiliser ISO8859-1 comme codage du jeu de caractères de la base de données. Non seulement cela ne permet pas d'exploiter pleinement la prise en charge du codage des jeux de caractères de la base de données elle-même, mais cela augmente également la complexité de la programmation. Lors de la programmation, vous pouvez d'abord utiliser les fonctions de gestion fournies par le système de gestion de base de données pour vérifier si les données chinoises sont correctes.

Avant d'interroger la base de données, le programme PHP exécute d'abord mysql_query("SET NAMES xxxx"); où xxxx est l'encodage de votre page Web (charset=xxxx If charset=utf8). dans la page web, puis xxxx=utf8, si charset=gb2312 dans la page web, alors xxxx=gb2312 ont un code public pour se connecter à la base de données , qui est placé dans un fichier. . Dans ce fichier, ajoutez mysql_query ("SET NAMES xxxx") fera l'affaire.

 SET NAMES Affiche le jeu de caractères utilisé dans l'instruction SQL envoyée par le client. Par conséquent, l'instruction SET NAMES 'utf-8' indique au serveur "les informations futures de ce client utilisent le jeu de caractères utf-8". Il spécifie également le jeu de caractères pour les résultats que le serveur renvoie au client (par exemple, si vous utilisez une instruction SELECT, il indique quel jeu de caractères est utilisé pour les valeurs de colonne).

Techniques couramment utilisées pour localiser les problèmes

La localisation des problèmes d'encodage chinois utilise généralement la méthode la plus stupide et la plus efficace : imprimer des caractères après traitement par le programme que vous pensez suspect. L'intérieur code de la chaîne. En imprimant le code interne d'une chaîne, vous pouvez savoir quand les caractères chinois sont convertis en Unicode, quand Unicode est reconverti en code interne chinois, quand un caractère chinois devient deux caractères Unicode, quand une chaîne chinoise est convertie en une chaîne de points d'interrogation, quand les bits hauts de la chaîne de caractères chinois ont-ils été coupés...

L'utilisation d'un exemple de chaîne approprié peut également aider à distinguer le type de question. Par exemple : "aaah aa?@aa" et autres chaînes de caractères chinois et anglais avec des caractères caractéristiques GB et GBK. D'une manière générale, les caractères anglais ne seront pas déformés quelle que soit la manière dont ils sont convertis ou traités (si vous les rencontrez, vous pouvez essayer d'augmenter la longueur des lettres anglaises consécutives).

Résoudre le problème de code tronqué dans diverses applications

 1) Utilisez des balises pour définir l'encodage des pages

Le but de cette balise est de déclarer quel jeu de caractères le codage du navigateur du client utilise pour afficher la page xxx peut être GB2312, GBK, UTF-8 (différent de MySQL, qui est UTF8), etc. Par conséquent, la plupart des pages peuvent utiliser cette méthode pour indiquer au navigateur quel encodage utiliser lors de l'affichage de cette page, afin d'éviter les erreurs d'encodage et les caractères tronqués. Mais parfois, nous constaterons que cette phrase ne fonctionne toujours pas. Quel que soit le nom de xxx, le navigateur utilise toujours le même codage, j'en reparlerai plus tard.

Veuillez noter qu'il appartient aux informations HTML et qu'il ne s'agit que d'une déclaration, qui indique uniquement que le serveur a transmis les informations HTML au navigateur.

 2) header("content-type:text/html; charset=xxx");

La fonction de cette fonction header() est de convertir les informations entre parenthèses Envoyé aux en-têtes http. Si le contenu entre parenthèses est celui mentionné dans l'article, la fonction est fondamentalement la même que l'étiquette. Si vous comparez la première, vous constaterez que les caractères sont similaires. Mais la différence est que s’il existe cette fonction, le navigateur utilisera toujours l’encodage xxx que vous avez demandé et ne désobéira jamais, cette fonction est donc très utile. Pourquoi cela se produit-il ? Ensuite, nous devons parler de la différence entre les en-têtes http et les informations HTML :

L'en-tête http est une chaîne envoyée par le serveur avant d'envoyer les informations HTML au navigateur via le protocole http. La balise appartient aux informations HTML, donc le contenu envoyé par header() atteint le navigateur en premier. Le point populaire est que la priorité de header() est supérieure à (je ne sais pas si je peux le dire). ce). Si une page PHP a à la fois header("content-type:text/html; charset=xxx") et header("content-type:text/html; charset=xxx"), le navigateur ne reconnaîtra que l'ancien en-tête http et pas méta. Bien entendu, cette fonction ne peut être utilisée qu’au sein des pages PHP.

Il reste également une question : pourquoi le premier fonctionne-t-il définitivement, mais le second ne fonctionne parfois pas ? C'est la raison pour laquelle nous voulons parler d'Apache ensuite ?

 3) AddDefaultCharset

 Dans le dossier conf du répertoire racine d'Apache, il y a l'intégralité du document de configuration d'Apache httpd.conf.

Utilisez un éditeur de texte pour ouvrir httpd.conf. La ligne 708 (différentes versions peuvent être différentes) contient AddDefaultCharset xxx, où xxx est le nom de codage. La signification de cette ligne de code : définissez le jeu de caractères dans l'en-tête http du fichier de page Web sur l'ensemble du serveur sur votre jeu de caractères xxx par défaut. Avoir cette ligne équivaut à ajouter une ligne de header("content-type:text/html; charset=xxx") à chaque fichier. Vous pouvez maintenant comprendre pourquoi le navigateur utilise toujours gb2312 même s'il est défini sur utf-8.

S'il y a un header("content-type:text/html; charset=xxx") dans la page Web, le jeu de caractères par défaut sera remplacé par le jeu de caractères que vous avez défini, donc cette fonction sera toujours utile. Si vous ajoutez un "#" devant AddDefaultCharset xxx, commentez cette phrase et que la page ne contient pas d'en-tête("content-type..."), alors c'est au tour de la balise méta de prendre effet.

L'ordre de priorité des éléments ci-dessus est répertorié ci-dessous :

.. header("content-type:text/html; charset=xxx")

.. AddDefaultCharset xxx

 ..

Si vous êtes un programmeur web, il est recommandé d'ajouter un en-tête ("content-type: text/html; charset=xxx") à chacune de vos pages, ainsi que vous pouvez garantir qu’il peut être affiché correctement sur n’importe quel serveur et qu’il a une forte portabilité.

 4) La configuration default_charset dans PHP.ini :

Le default_charset = "gb2312" dans php.ini définit le jeu de caractères de langue par défaut de PHP. Il est généralement recommandé de commenter cette ligne et de laisser le navigateur sélectionner automatiquement la langue en fonction du jeu de caractères dans l'en-tête de la page Web au lieu de créer une exigence obligatoire, afin que les services Web dans plusieurs langues puissent être fournis sur le même serveur.

Conclusion

En fait, le codage chinois dans le développement PHP n'est pas aussi compliqué qu'on l'imagine, bien qu'il n'y ait pas de règles fixes pour localiser et résoudre les problèmes, ni d'environnements d'exploitation variés. sont également différents, mais le principe derrière est le même. Comprendre la connaissance des jeux de caractères est la base pour résoudre les problèmes de personnages. Cependant, avec les changements apportés au jeu de caractères chinois, non seulement la programmation PHP, mais aussi les problèmes de traitement de l'information chinoise persisteront pendant un certain temps.

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)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
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)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

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,

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles