Quelle est la cause des caractères chinois tronqués ?
La raison des caractères chinois tronqués : la méthode de décodage et la méthode d'encodage sont incohérentes. Un caractère chinois codé en UTF-8 sera converti en 3 octets, et s'il est codé en gbk, il sera converti en 2 octets ; et un caractère anglais codé en UTF-8 sera converti en 1 octet, s'il est codé en gbk, il le sera. être converti en 1 octet.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
Parlons d'abord de ce que sont les caractères tronqués
Je ne sais pas si quelqu'un y a déjà pensé de cette façon. Une chaîne contient non seulement des caractères, mais également des informations d'encodage qui la cachent. Par exemple, String str = "Bonjour" en Java ; je pensais cela auparavant, la chaîne str cache sa méthode d'encodage unicode ou gbk, iso-8859-1, etc. Cette compréhension est erronée. Les caractères ne sont que des caractères sans aucune autre information. La bonne compréhension devrait être que la chaîne que les gens voient dans un fichier est le système qui lit les informations numériques dans la mémoire et les décode ensuite. Les caractères sont affichés en dernier. , c'est-à-dire que lorsque vous double-cliquez pour ouvrir un fichier texte, le système lira et affichera les informations numériques dans la mémoire. Lorsque vous enregistrez un fichier texte, le système encodera le fichier selon la méthode d'encodage que vous avez définie, puis le mettra. dans la mémoire. Donc les caractères tronqués sont aussi des caractères, juste des caractères étranges, et il n'y a pas de "code".
Parlons ensuite des raisons des codes tronquésNous voyons souvent l'explication des raisons des codes tronqués sur Internet : Les codes tronqués sont causés par l'incohérence entre la méthode de décodage et la méthode d'encodage. pas faux, mais la même phrase elle-même est Le code tronqué n'est qu'un résumé, cela ne vous aide pas à comprendre le code tronqué.
La question que nous voulons poser est donc la suivante : pourquoi des codes tronqués apparaissent-ils lorsque la méthode de décodage et la méthode d'encodage sont incohérentes.
Voici les trois méthodes d'encodage utf-8, gbk et iso-8859-1 à titre d'exemples.
@Test public void testEncode() throws Exception { String str = "你好",en = "h?h"; System.out.println("========中文字符utf-8======="); byte[] utf8 = str.getBytes(); // 以utf-8方式编码 ,default:utf-8 for (byte b : utf8) { System.out.print(b + "\t"); } System.out.println("\n"+"========英文字符utf-8======="); byte[] utf8_en = en.getBytes(); // 以utf-8方式编码 ,default:utf-8 for (byte b : utf8_en) { System.out.print(b + "\t"); } System.out.println("\n"+"========中文字符gbk========="); byte[] gbk = str.getBytes("gbk"); for (byte b : gbk) { System.out.print(b + "\t"); } System.out.println("\n"+"========英文字符gbk========="); byte[] gbk_en = en.getBytes("gbk"); for (byte b : gbk_en) { System.out.print(b + "\t"); } String s = new String(utf8,"utf-8"); String s1 = new String(utf8,"gbk"); System.out.println("\n"+s + "====gbk:" + s1); }
Testez la méthode ci-dessus, et le résultat imprimé est :
========中文字符utf-8======= -28 -67 -96 -27 -91 -67 ========英文字符utf-8======= 104 63 104 ========中文字符gbk========= -60 -29 -70 -61 ========英文字符gbk========= 104 63 104 你好====gbk:浣犲ソ ------------------------------------------------------------------------------------
On peut conclure que :
Un caractère chinois sera converti en 3 octets s'il est codé avec utf-8, et s'il est codé avec gbk, il sera converti en 2 octets ;
Un caractère anglais sera converti en 1 octet s'il est codé en utf-8, et s'il est codé en gbk, il sera converti en 1 octet.
Il ressort de la dernière ligne d'impression combinée aux lignes 29 à 31 du code que si le tableau d'octets utf8 est décodé en mode utf-8, il n'y aura pas de caractères tronqués, et ce sera toujours le cas. le "Bonjour" original, et s'il est décodé en mode gbk Lors du décodage, trois caractères tronqués sont apparus. Pourquoi y a-t-il 3 au lieu de 2 ?
Parlons ensuite de l'iso-8859-1. Cet encodage est utilisé dans la série anglaise, ce qui signifie qu'il ne peut pas représenter le chinois (si vous souhaitez l'utiliser, vous devez vous fier à d'autres encodages compatibles avec l'iso-8859. -1 méthode d'encodage). Il ne peut pas être lu. Les caractères seront traités comme des points d'interrogation anglais '?'. Le nombre d'encodage iso-8859-1 des points d'interrogation anglais est : 63 (décimal) (en fait, dans presque toutes les méthodes d'encodage). , tous les caractères anglais utilisent une représentation de code d'octet fixe, à l'exception du codage Unicode).
@Test public void testISO() throws Exception { String str = "你好"; byte[] bs = str.getBytes("iso-8859-1"); for (byte b : bs) { System.out.println(b); } System.out.println(new String(bs,"iso-8859-1")); System.out.println(new String(bs,"utf-8")); System.out.println(new String(bs,"gbk")); System.out.println(new String(bs,"unicode")); }
Imprimer les résultats
63 63 ?? ?? ?? 㼿
Explication 63 =》?, tous les chinois sont considérés ?, donc quand ce code est exécuté : byte[] bs = "Hello".getBytes("iso-8859-1" );Les informations ont été perdu.
Execute String str = new String(bs, "any charset"); str n'est plus égal à "Bonjour", mais deux points d'interrogation ??. Ainsi, dans Tomcat, nous rencontrons souvent des caractères chinois se transformant en une longue chaîne de ??????, ce qui en est l'origine.
En iso-8859-1, utf-8 et gbk, un bytecode représente un caractère anglais
En codage Unicode, un bytecode ne peut représenter aucun caractère, et il est stipulé qu'il doit s'agir de deux bytecodes (parfois 4) peut représenter un personnage.
Cela dit, beaucoup de gens peuvent se demander pourquoi tant de méthodes d'encodage sont utilisées. Tous les caractères peuvent-ils être représentés en les unifiant en utf-8 ?
Le codage ne consiste pas seulement à savoir s'il peut représenter des caractères, mais également à transmettre et à stocker.
1. UTF-8 peut en effet représenter presque tous les caractères connus. Comme mentionné précédemment, seuls 3 octets représentent un caractère chinois en codage UTF-8, ce qui prend évidemment de la place et n'est pas propice à la transmission et au stockage (la transmission et le stockage se font tous deux en binaire)Comprendre les règles des différentes méthodes d'encodage : https://jingyan.baidu.com/article/020278118741e91bcd9ce566.html2. Le caractère économise le plus d'espace, comme iso-8859-1. Mais il n’y a pas seulement des personnages anglais dans le monde, mais aussi des personnages de diverses régions et pays. Le nombre de caractères doit donc être supérieur à 2 à la puissance 8.
Ainsi en combinant les deux points ci-dessus, de nombreuses méthodes d'encodage apparaissent naturellement.
Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !
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)

Le problème du chinois tronqué sous Linux est un problème courant lors de l'utilisation de jeux de caractères et d'encodages chinois. Les caractères tronqués peuvent être causés par des paramètres de codage de fichier incorrects, des paramètres régionaux du système non installés ou définis, des erreurs de configuration de l'affichage du terminal, etc. Cet article présentera plusieurs solutions de contournement courantes et fournira des exemples de code spécifiques. 1. Vérifiez le paramètre d'encodage du fichier. Utilisez la commande file pour afficher l'encodage du fichier. Utilisez la commande file dans le terminal pour afficher l'encodage du fichier : file-ifilename S'il y a "charset" dans la sortie.

Solutions au démarrage tronqué de Tomcat : 1. Modifiez le fichier de configuration de Tomcat ; 2. Modifiez la langue du système ; 3. Modifiez l'encodage de la fenêtre de ligne de commande ; 4. Vérifiez la configuration du serveur Tomcat ; fichier ; 7, essayez d’autres solutions. Introduction détaillée : 1. Modifiez le fichier de configuration conf de Tomcat, ouvrez le répertoire conf de Tomcat, recherchez le fichier "logging.properties", etc.

Dans le système Windows 10, les caractères tronqués sont courants. La raison derrière cela est souvent que le système d'exploitation ne fournit pas de prise en charge par défaut pour certains jeux de caractères, ou qu'il y a une erreur dans les options de jeu de caractères définies. Afin de prescrire le bon médicament, nous analyserons en détail ci-dessous les procédures opératoires réelles. Comment résoudre le code tronqué de Windows 10 1. Ouvrez les paramètres et recherchez « Heure et langue » 2. Recherchez ensuite « Langue » 3. Recherchez « Gérer les paramètres de langue » 4. Cliquez sur « Modifier les paramètres régionaux du système » ici 5. Vérifiez comme indiqué et cliquez sur Assurez-vous juste.

Méthodes pour résoudre le problème chinois tronqué de PHPDompdf PHPDompdf est un outil de conversion de documents HTML en fichiers PDF. Il est puissant et facile à utiliser. Cependant, lors du traitement du contenu chinois, vous rencontrez parfois le problème des caractères chinois tronqués. Cet article présentera quelques méthodes pour résoudre le problème des caractères chinois tronqués dans PHPDompdf et fournira des exemples de code spécifiques. 1. Lors de l'utilisation de fichiers de polices pour traiter du contenu chinois, un problème courant est que Dompdf ne prend pas en charge le contenu chinois par défaut.

Lorsque de nombreux utilisateurs utilisent des ordinateurs, ils constateront qu'il existe de nombreux fichiers avec le suffixe dll, mais de nombreux utilisateurs ne savent pas comment ouvrir de tels fichiers. Pour ceux qui veulent savoir, veuillez consulter les détails suivants. pour ouvrir et modifier les fichiers dll : 1. Téléchargez un logiciel appelé "exescope", puis téléchargez-le et installez-le. 2. Cliquez ensuite avec le bouton droit sur le fichier dll et sélectionnez "Modifier les ressources avec exescope". 3. Cliquez ensuite sur « OK » dans la boîte de dialogue d'erreur contextuelle. 4. Ensuite, sur le panneau de droite, cliquez sur le signe « + » devant chaque groupe pour afficher le contenu qu'il contient. 5. Cliquez sur le fichier dll que vous souhaitez afficher, puis cliquez sur « Fichier » et sélectionnez « Exporter ». 6. Ensuite, vous pouvez

Certains amis veulent ouvrir un bloc-notes et constatent que leur bloc-notes Win11 est tronqué et ne savent pas quoi faire. En fait, il suffit généralement de modifier la région et la langue. Le Bloc-notes Win11 est tronqué : Première étape, utilisez la fonction de recherche, recherchez et ouvrez le "Panneau de configuration". Deuxième étape, cliquez sur "Modifier le format de la date, de l'heure ou des nombres" sous Horloge et région. Troisième étape, cliquez sur l'option "Gérer". au-dessus de la carte. La quatrième étape consiste à cliquer sur « Modifier les paramètres régionaux du système » ci-dessous. La cinquième étape consiste à modifier les paramètres régionaux actuels du système en « Chinois (simplifié, Chine) » et à cliquer sur « OK » pour enregistrer.

Les solutions aux caractères tronqués de Filezilla incluent : 1. Vérifiez les paramètres d'encodage ; 2. Vérifiez le fichier lui-même ; 3. Vérifiez la configuration du serveur ; 4. Essayez d'autres outils de transfert ; 6. Vérifiez les problèmes de réseau ; . Recherchez une assistance technique. Pour résoudre le problème des caractères tronqués de FileZilla, vous devez partir de plusieurs aspects, rechercher progressivement la cause du problème et prendre les mesures correspondantes pour le réparer.

Raisons et solutions courantes pour les caractères chinois tronqués dans l'installation de MySQL MySQL est un système de gestion de base de données relationnelle couramment utilisé, mais vous pouvez rencontrer le problème des caractères chinois tronqués lors de l'utilisation, ce qui pose des problèmes aux développeurs et aux administrateurs système. Le problème des caractères chinois tronqués est principalement dû à des paramètres de jeu de caractères incorrects, à des jeux de caractères incohérents entre le serveur de base de données et le client, etc. Cet article présentera en détail les causes courantes et les solutions des caractères chinois tronqués dans l'installation de MySQL pour aider tout le monde à mieux résoudre ce problème. 1. Raisons courantes : paramètre du jeu de caractères