Maison > Article > interface Web > Quelle est la différence entre UTF-8 et GBK UTF8 GB2312
Le contenu de cet article porte sur la différence entre UTF-8 et GBK UTF8 GB2312. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
UTF-8 : Unicode TransformationFormat-8bit, la nomenclature est autorisée, mais ne contient généralement pas de nomenclature. Il s'agit d'un codage multi-octets utilisé pour résoudre les caractères internationaux. Il utilise 8 bits (soit un octet) pour l'anglais et 24 bits (trois octets) pour le chinois. UTF-8 contient des caractères nécessaires à tous les pays du monde. Il s'agit d'un codage international doté d'une grande polyvalence. Le texte codé en UTF-8 peut être affiché sur les navigateurs de divers pays prenant en charge le jeu de caractères UTF8. Par exemple, s'il s'agit d'un encodage UTF8, le chinois peut également être affiché sur l'IE anglais des étrangers, et ils n'ont pas besoin de télécharger le package de prise en charge de la langue chinoise d'IE.
GBK est une norme compatible avec GB2312 après extension basée sur la norme nationale GB2312. Le codage de texte de GBK est représenté par des octets doubles, c'est-à-dire que les caractères chinois et anglais sont représentés par des octets doubles. Afin de distinguer les caractères chinois, les bits les plus élevés sont définis sur 1. GBK contient tous les caractères chinois et constitue un codage national. Il est moins polyvalent que UTF8, mais UTF8 occupe une base de données plus grande que GBK.
GBK, GB2312, etc. doivent être convertis en UTF8 via l'encodage Unicode :
GBK, GB2312--Unicode--UTF8
UTF8--Unicode--GBK, GB2312
pCSS5 est simplement fonctionnellement parlant :
1 GBK fait généralement référence à l'encodage GB2312 qui ne prend en charge que les caractères chinois simplifiés
2.utf fait généralement référence à UTF-8, prend en charge les caractères chinois simplifiés, les caractères chinois traditionnels, l'anglais, le japonais, le coréen et d'autres langues (prend en charge une gamme plus large de caractères)
3. Généralement, utf-8 et gb2312 sont utilisés en Chine. Choisissez en fonction de vos propres besoins Les détails spécifiques sont les suivants :Pour un site web ou un forum, s'il y a des caractères anglais S'il y en a plus, il est recommandé d'utiliser UTF-8 pour gagner de la place. Cependant, de nombreux plug-ins de forum ne prennent désormais généralement en charge que GBK.
Explication détaillée de la différence entre les encodagesPour faire simple, les codes unicode, gbk et big five sont les valeurs codées, et utf-8, uft-16 et autres sont les expressions de cette valeur. Les trois codes précédents sont compatibles. Pour un même caractère chinois, les trois valeurs de code sont complètement différentes. Par exemple, la valeur non codée de « Chinois » est différente de celle de gbk. Supposons que la valeur non codée soit a040 et que gbk soit b030, et que le code uft-8 soit la forme sous laquelle cette valeur est exprimée. Le code utf-8 est entièrement organisé uniquement pour le décodage. Si GBK veut être converti en UTF-8, il doit d'abord être converti en décodage, puis converti en utf-8 et c'est OK.
Pour plus de détails, veuillez consulter l'article ci-dessous.
Parlez de l'encodage Unicode et expliquez brièvement les termes tels que UCS, UTF, BMP, BOM, etc.
C'est une lecture intéressante écrite par des programmeurs pour des programmeurs. Ce qu'on appelle le plaisir signifie que vous pouvez facilement comprendre certains concepts auparavant peu clairs et améliorer vos connaissances, ce qui est similaire à la mise à niveau dans un jeu RPG. La motivation pour organiser cet article est deux questions :Utilisez "Enregistrer sous" du Bloc-notes Windows pour enregistrer au format GBK, Unicode, Unicode big endian et UTF -8 Convert entre ces méthodes de codage. C'est également un fichier txt. Comment Windows identifie-t-il la méthode d'encodage ?
J'ai découvert il y a longtemps que les fichiers txt codés Unicode, Unicode bigendian et UTF-8 auront quelques octets de plus au début, qui sont FF, FE (Unicode), FE, FF (Unicode bigendian) ,EF, BB, BF (UTF-8). Mais sur quels critères se basent ces marqueurs ?
J'ai récemment vu un ConvertUTF.c sur Internet, qui réalise la conversion mutuelle des méthodes d'encodage UTF-32, UTF-16 et UTF-8. Je connais déjà les méthodes de codage telles que le codage Unicode (UCS2), GBK et UTF-8. Mais ce programme me rend un peu confus et je ne me souviens pas de la relation entre UTF-16 et UCS2. Après avoir vérifié les informations pertinentes, j'ai finalement clarifié ces problèmes et j'ai également appris quelques détails sur Unicode. Écrivez un article et envoyez-le à des amis qui ont des questions similaires. Cet article est rédigé de la manière la plus simple possible, mais les lecteurs doivent savoir ce que sont les octets et ce qu'est l'hexadécimal.
0, big endian et little endian
Le mot « endian » vient de « Les voyages de Gulliver ». La guerre civile à Lilliput a été provoquée par la question de savoir s'il fallait casser les œufs du Big-Endian ou du Little-Endian. En conséquence, il y a eu six rébellions. Un empereur a perdu la vie et un autre a perdu le trône.
Nous traduisons généralement endian par « ordre des octets », et big endian et little endian sont appelés « big end » et « small end ».
1. Codage des caractères, code interne et, en passant, codage des caractères chinois
Les caractères doivent être codés avant de pouvoir être traités par l'ordinateur. La méthode de codage par défaut utilisée par l'ordinateur est le code interne de l'ordinateur. Les premiers ordinateurs utilisaient le codage ASCII 7 bits Afin de traiter les caractères chinois, les programmeurs ont conçu le GB2312 pour le chinois simplifié et le big5 pour le chinois traditionnel.
GB2312 (1980) contient un total de 7445 caractères, dont 6763 caractères chinois et 682 autres symboles. La plage de code interne de la zone de caractères chinois s'étend de B0 à F7 dans l'octet de poids fort, A1 à FE dans l'octet de poids faible, et les bits de code occupés sont 72*94=6768. Parmi eux, 5 postes vacants sont D7FA-D7FE.
GB2312 prend en charge trop peu de caractères chinois. La spécification d'extension des caractères chinois GBK1.0 de 1995 comprend 21 886 symboles, divisés en zone de caractères chinois et zone de symboles graphiques. La zone des caractères chinois comprend 21 003 caractères.
De ASCII, GB2312 à GBK, ces méthodes de codage sont rétrocompatibles, c'est-à-dire que le même caractère a toujours le même codage dans ces schémas, et les normes ultérieures prennent en charge plus de caractères. Dans ces codages, l'anglais et le chinois peuvent être traités de manière uniforme. La façon de distinguer le codage chinois est que le bit le plus élevé de l'octet de poids fort n'est pas 0. Selon la façon dont les programmeurs les appellent, GB2312 et GBK appartiennent tous deux à des jeux de caractères à deux octets (DBCS).
GB18030 en 2000 est la norme nationale officielle qui a remplacé GBK1.0. Cette norme comprend 27 484 caractères chinois, ainsi que le tibétain, le mongol, l'ouïghour et d'autres langues minoritaires ethniques majeures. En termes de vocabulaire de caractères chinois, le GB18030 ajoute 6 582 caractères chinois d'extension CJK A (code Unicode 0x3400-0x4db5) aux 20 902 caractères chinois du GB13000.1, et un total de 27 484 caractères chinois sont inclus.
CJK signifie Chine, Japon et Corée. Afin d'économiser les bits de code, Unicode code uniformément les caractères dans les trois langues de la Chine, du Japon et de la Corée. GB13000.1 est la version chinoise de la norme ISO/IEC 10646-1, équivalente à Unicode 1.1.
Le codage du GB18030 adopte des schémas à un octet, double octet et 4 octets. Parmi eux, le simple octet, le double octet et le GBK sont entièrement compatibles. Le bit de code du codage sur 4 octets contient 6 582 caractères chinois d'extension CJK A. Par exemple : le codage de l'UCS 0x3400 dans GB18030 doit être 8139EF30 et le codage de l'UCS 0x3401 dans GB18030 doit être 8139EF31.
Microsoft fournit un package de mise à niveau pour GB18030, mais ce package de mise à niveau fournit uniquement un nouvel ensemble de polices prenant en charge 6582 caractères chinois de l'extension CJK A : New Song Dynasty-18030, et ne modifie pas le code interne. Le code interne de Windows est toujours GBK.
Voici quelques détails :
Le texte original du GB2312 est toujours le code de localisation Du code de localisation au code interne, A0 doit être ajouté respectivement à l'octet de poids fort et à l'octet de poids faible. .
Pour tout codage de caractères, l'ordre des unités de codage est spécifié par le schéma de codage, quel que soit l'endian. Par exemple, l'unité de codage de GBK est l'octet et deux octets sont utilisés pour représenter un caractère chinois. L'ordre de ces deux octets est fixe et n'est pas affecté par l'ordre des octets du processeur. L'unité de codage de l'UTF-16 est le mot (double octet). L'ordre entre les mots est spécifié par le schéma de codage. Seule la disposition des octets dans le mot sera affectée par l'endian. UTF-16 sera introduit ultérieurement.
Les bits les plus élevés des deux octets du GB2312 sont tous deux égaux à 1. Mais il n’y a que 128*128=16384 points de code qui remplissent cette condition. Par conséquent, le bit le plus élevé de l’octet faible de GBK et GB18030 peut ne pas être 1. Cependant, cela n'affecte pas l'analyse du flux de caractères DBCS : lors de la lecture du flux de caractères DBCS, tant qu'un octet avec un bit haut de 1 est rencontré, les deux octets suivants peuvent être codés comme un double octet, quel que soit le octet faible. Qu'est-ce que la position haute.
2. Unicode, UCS et UTF
Comme mentionné précédemment, les méthodes d'encodage ASCII, GB2312, GBK à GB18030 sont rétrocompatibles. Unicode est uniquement compatible avec ASCII (plus précisément, compatible avec ISO-8859-1) et n'est pas compatible avec le code GB. Par exemple, le codage Unicode du caractère « 汉 » est 6C49, tandis que le code GB est BABA.
Unicode est également une méthode de codage de caractères, mais il s'agit d'un système de codage conçu par une organisation internationale qui peut s'adapter à toutes les langues du monde. Le nom scientifique d'Unicode est "Jeu de caractères codés universels à plusieurs octets", appelé UCS. UCS peut être considéré comme l'abréviation de « Unicode CharacterSet ».
Selon Wikipédia (http://zh.wikipedia.org/wiki/) : Historiquement, deux organisations ont tenté de concevoir Unicode de manière indépendante, à savoir l'Organisation internationale de normalisation (ISO) et un fabricant de logiciels. Association d'entreprises (unicode.org). L'ISO a développé le projet ISO 10646 et le Consortium Unicode a développé le projet Unicode.
Vers 1991, les deux parties ont reconnu que le monde n'avait pas besoin de deux jeux de caractères incompatibles. Ils ont donc commencé à fusionner le travail des deux parties et à travailler ensemble pour créer une liste de codage unique. À partir d'Unicode 2.0, le projet Unicode utilise les mêmes polices et polices que l'ISO 10646-1.
Les deux projets existent toujours et publient leurs propres normes de manière indépendante. La dernière version du Consortium Unicode est Unicode 4.1.0 en 2005. La dernière norme ISO est ISO 10646-3:2003.
UCS stipule uniquement comment encoder, mais ne précise pas comment transmettre ou enregistrer cet encodage. Par exemple, le codage UCS du caractère « Chinois » est 6C49. Je peux utiliser 4 nombres ASCII pour transmettre et sauvegarder ce codage ; je peux également utiliser le codage UTF-8 : 3 octets consécutifs E6 B189 pour le représenter. La clé est que les deux parties à la communication doivent être d’accord. UTF-8, UTF-7 et UTF-16 sont toutes des solutions largement acceptées. Un avantage particulier de l'UTF-8 est qu'il est entièrement compatible avec la norme ISO-8859-1. UTF est l'abréviation de « UCS Transformation Format ».
Les RFC2781 et RFC3629 de l'IETF décrivent les méthodes de codage de l'UTF-16 et de l'UTF-8 de manière claire, précise et rigoureuse dans le style cohérent de la RFC. J'oublie toujours que IETF est l'abréviation de Internet Engineering Task Force. Cependant, la RFC maintenue par l'IETF constitue la base de toutes les spécifications sur Internet.
2.1, code interne et page de codes
Actuellement, le noyau Windows prend déjà en charge le jeu de caractères Unicode, afin que le noyau puisse prendre en charge toutes les languesdans le monde. Cependant, étant donné qu'un grand nombre de programmes et de documents existants utilisent un certain codage de langage, tel que GBK, il est impossible pour Windows de ne pas prendre en charge le codage existant et d'utiliser tous Unicode.
Windows utilise des pages de codes pour s'adapter à différents pays et régions. La page de codes peut être comprise comme le code interne mentionné précédemment. La page de codes correspondant à GBK est CP936.
Microsoft a également défini une page de codes pour GB18030 : CP54936. Cependant, étant donné que GB18030 a des codages sur 4 octets et que la page de codes Windows ne prend en charge que les codages sur un octet et deux octets, cette page de codes ne peut pas vraiment être utilisée.
3. UCS-2, UCS-4, BMP
UCS a deux formats : UCS-2 et UCS-4. Comme son nom l'indique, UCS-2 est codé sur deux octets et UCS-4 est codé sur 4 octets (en fait, seuls 31 bits sont utilisés, le bit le plus élevé doit être 0). Faisons quelques jeux mathématiques simples :
UCS-2 a 2^16=65536 points de code, et UCS-4 a 2^31=2147483648 points de code.
UCS-4 est divisé en 2^7=128 groupes selon l'octet le plus élevé, le bit le plus élevé étant 0. Chaque groupe est divisé en 256 plans en fonction de l'octet suivant le plus élevé. Chaque plan est divisé en 256 lignes (lignes) en fonction du troisième octet, et chaque ligne contient 256 cellules. Bien entendu, les cellules d’une même ligne ne diffèrent que par le dernier octet, et le reste est identique.
Le plan 0 du groupe 0 est appelé plan multilingue de base, ou BMP. Ou dans UCS-4, les bits de code dont les deux octets supérieurs sont 0 sont appelés BMP.
Supprimez les deux premiers octets zéro du BMP de UCS-4 pour obtenir UCS-2. Ajoutez deux octets zéro devant les deux octets de l'UCS-2 pour obtenir le BMP de l'UCS-4. Aucun caractère n'est alloué en dehors du BMP dans la spécification UCS-4 actuelle.
4. Encodage UTF
UTF-8 encode UCS en unités de 8 bits. La méthode d'encodage d'UCS-2 vers UTF-8 est la suivante :
Encodage UCS-2 (hexadécimal) Flux d'octets UTF-8 (binaire)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
Par exemple, le codage Unicode du caractère "chinois" est 6C49 est compris entre 0800-FFFF, vous devez donc utiliser un modèle de 3 octets : 1110xxxx 10xxxxxx10xxxxxx. . L'écriture de 6C49 en binaire est : 0110 110001 001001. En utilisant ce flux binaire pour remplacer x dans le modèle à son tour, nous obtenons : 1110011010110001 10001001, soit E6 B1 89.
Les lecteurs peuvent utiliser le Bloc-notes pour tester si notre codage est correct. Il convient de noter qu'UltraEdit sera automatiquement converti en UTF-16 lors de l'ouverture d'un fichier texte codé en UTF-8, ce qui peut prêter à confusion. Vous pouvez désactiver cette option dans les paramètres. Un meilleur outil est Hex Workshop.
UTF-16 code UCS en unités de 16 bits. Pour les codes UCS inférieurs à 0x10000, l'encodage UTF-16 est égal à l'entier non signé de 16 bits correspondant au code UCS. Pour les codes UCS d'au moins 0x10000, un algorithme est défini. Cependant, étant donné que le BMP de l'UCS2 ou de l'UCS4 réellement utilisé doit être inférieur à 0x10000, on peut pour l'instant considérer que UTF-16 et UCS-2 sont fondamentalement identiques. Cependant, UCS-2 n'est qu'un schéma de codage et UTF-16 est utilisé pour la transmission réelle, la question de l'ordre des octets doit donc être prise en compte.
5. L'ordre des octets UTF et BOM
UTF-8 utilise les octets comme unité de codage, et il n'y a pas de problème d'ordre des octets. UTF-16 utilise deux octets comme unité de codage. Avant d'interpréter un texte UTF-16, vous devez d'abord comprendre l'ordre des octets de chaque unité de codage. Par exemple, le codage Unicode de « Kui » est 594E et le codage Unicode de « B » est 4E59. Si nous recevons le flux d'octets UTF-16 « 594E », s'agit-il de « Ku » ou de « B » ?
La méthode recommandée pour marquer l'ordre des octets dans la spécification Unicode est la nomenclature. La nomenclature n'est pas la liste de nomenclature de la « nomenclature », mais la marque d'ordre des octets. BOM est une petite idée astucieuse :
Il y a un caractère appelé "ZERO WIDTH NO-BREAKSPACE" dans l'encodage UCS, et son encodage est FEFF. FFFE est un caractère qui n'existe pas dans UCS, il ne devrait donc pas apparaître dans la transmission réelle. La spécification UCS recommande de transmettre les caractères "ZERO WIDTH NO-BREAK SPACE" avant de transmettre le flux d'octets.
De cette façon, si le récepteur reçoit FEFF, cela signifie que le flux d'octets est Big-Endian ; s'il reçoit FFFE, cela signifie que le flux d'octets est Little-Endian. C'est pourquoi le caractère "ZERO WIDTH NO-BREAK SPACE" est également appelé BOM.
UTF-8 ne nécessite pas de nomenclature pour indiquer l'ordre des octets, mais peut utiliser la nomenclature pour indiquer la méthode d'encodage. Le codage UTF-8 du caractère « ZERO WIDTH NO-BREAKSPACE » est EF BB BF (les lecteurs peuvent le vérifier en utilisant la méthode de codage que nous avons présentée précédemment). Ainsi, si le récepteur reçoit un flux d'octets commençant par EF BBBF, il sait qu'il est codé en UTF-8.
Windows utilise BOM pour marquer la méthode d'encodage des fichiers texte.
6. Autres documents de référence
Le principal document de référence pour cet article est « Bref aperçu de l'ISO-IEC 10646 et d'Unicode » (http://www.nada.kth.se/i18n/ucs/ unicode -iso10646-oview.html).
J'ai aussi trouvé deux articles qui avaient l'air bien, mais comme j'avais déjà les réponses à mes questions initiales, je ne les ai pas lus :
"Comprendre Unicode Une introduction générale à la norme Unicode" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)
"Bases de l'encodage des jeux de caractères Compréhension encodages de jeux de caractères et encodages hérités" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)
J'ai écrit UTF-8, UCS-2, GBK mutual Packages convertis, y compris les versions avec et sans API Windows. Si j'ai le temps à l'avenir, je ferai le tri et le mettrai sur ma page d'accueil personnelle
J'ai commencé à écrire cet article après avoir réfléchi clairement à tous les problèmes et pensais pouvoir le terminer dans un moment. De façon inattendue, il a fallu beaucoup de temps pour réfléchir au libellé et vérifier les détails, et je l'ai écrit de 13h30 à 21h00. J'espère que certains lecteurs pourront en profiter.
Annexe 1 Parlons du code de localisation, GB2312, du code interne et de la page de codes
Certains amis ont encore des questions sur cette phrase dans l'article :
« Le texte original du GB2312 est toujours l'emplacement code. À partir du code de localisation Pour accéder au code interne, vous devez ajouter A0 respectivement à l'octet de poids fort et à l'octet de poids faible "
Laissez-moi vous expliquer en détail :
"Le texte original de. GB2312" fait référence à la norme nationale de 1980. Norme "Ensemble de base de jeux de caractères codés chinois pour l'échange d'informations standard national de la République populaire de Chine GB2312-80". Cette norme utilise deux nombres pour coder les caractères chinois et les symboles chinois. Le premier nombre est appelé « zone » et le deuxième nombre est appelé « bit ». C'est pourquoi on l'appelle aussi code de localisation. Les zones 1 à 9 sont des symboles chinois, les zones 16 à 55 sont des caractères chinois de premier niveau et les zones 56 à 87 sont des caractères chinois de deuxième niveau. Désormais, Windows dispose également d'une méthode de saisie d'emplacement, par exemple, saisissez 1601 pour obtenir « ah ». (Cette méthode de saisie d'emplacement peut reconnaître automatiquement les codes de localisation hexadécimaux GB2312 et décimaux, ce qui signifie que la saisie de B0A1 obtiendra également "ah".)
Le code interne fait référence au codage des caractères dans le système d'exploitation. Le code interne des premiers systèmes d'exploitation dépendait de la langue. Windows d'aujourd'hui prend en charge Unicode dans le système, puis utilise des pages de codes pour s'adapter à différentes langues. Le concept de « code interne » est relativement vague. Microsoft fait généralement référence au codage spécifié par la page de codes par défaut comme étant du code interne.
Il n'existe pas de définition officielle du terme code interne, et page de codes est simplement le nom de la société Microsoft. En tant que programmeurs, tant que nous savons de quoi il s’agit, il n’est pas nécessaire de trop examiner ces termes.
La soi-disant page de codes (page de codes) est le codage des caractères pour une langue. Par exemple, la page de codes de GBK est CP936, la page de codes de BIG5 est CP950 et la page de codes de GB2312 est CP20936.
Windows a le concept de page de codes par défaut, c'est-à-dire quel encodage est utilisé par défaut pour interpréter les caractères. Par exemple, le Bloc-notes Windows ouvre un fichier texte et le contenu à l'intérieur est un flux d'octets : BA, BA, D7, D6. Comment Windows doit-il l’interpréter ?
Doit-il être interprété conformément à l'encodage Unicode, GBK, BIG5 ou ISO8859-1 ? Si vous l'interprétez selon GBK, vous obtiendrez le mot « caractères chinois ». Selon d'autres interprétations de codage, le caractère correspondant peut ne pas être trouvé ou un mauvais caractère peut être trouvé. La soi-disant « erreur » signifie qu'elle est incompatible avec l'intention originale de l'auteur du texte et que des caractères tronqués sont produits.
La réponse est que Windows interprète le flux d'octets dans le fichier texte en fonction de la page de codes par défaut actuelle. La page de codes par défaut peut être définie via les options régionales du Panneau de configuration. Il existe un élément ANSI dans Enregistrer sous du Bloc-notes, qui enregistre en fait selon la méthode de codage de la page de codes par défaut.
Le code interne de Windows est Unicode, qui peut techniquement prendre en charge plusieurs pages de codes en même temps. Tant que le fichier peut expliquer le codage qu'il utilise et que l'utilisateur a installé la page de codes correspondante, Windows peut l'afficher correctement. Par exemple, le jeu de caractères peut être spécifié dans un fichier HTML.
Certains auteurs de fichiers HTML, en particulier les auteurs anglais, pensent que tout le monde utilise l'anglais et ne spécifient pas de jeu de caractères dans le fichier. S'il utilise des caractères compris entre 0x80 et 0xff et que Windows chinois les interprète selon le GBK par défaut, des caractères tronqués apparaîtront. À ce stade, ajoutez simplement l'instruction spécifiant charset au fichier html, par exemple :
Si la page de codes utilisée par l'auteur original est compatible avec ISO8859-1, il n'y aura aucun caractère tronqué.
Parlons du code de localisation. Le code de localisation d'Ah est 1601, qui est 0x10, 0x01 lorsqu'il est écrit en hexadécimal. Cela entre en conflit avec le codage ASCII largement utilisé par les ordinateurs. Afin d'être compatible avec le codage ASCII de 00-7f, nous ajoutons respectivement A0 aux octets hauts et bas de l'indicatif régional. De cette façon, le code pour « ah » devient B0A1. Nous appelons également l'encodage avec deux A0 ajoutés comme Encodage GB2312 , bien que le texte original de GB2312 ne le mentionne pas du tout.
Ce qui précède est une introduction complète aux différences entre UTF-8 et GBK UTF8 GB2312 Si vous souhaitez en savoir plus sur les didacticiels HTML, veuillez faire attention au site Web PHP chinois.
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!