Inhaltsverzeichnis
Lassen Sie uns zunächst darüber sprechen, was verstümmelte Zeichen sind.
Heim häufiges Problem Was ist die Ursache für verstümmelte chinesische Schriftzeichen?

Was ist die Ursache für verstümmelte chinesische Schriftzeichen?

Nov 09, 2022 am 11:14 AM
乱码 中文乱码

Der Grund für verstümmelte chinesische Zeichen: Die Dekodierungsmethode und die Kodierungsmethode sind inkonsistent. Ein in UTF-8 kodiertes chinesisches Zeichen wird in 3 Bytes konvertiert, und wenn es in GBK kodiert ist, wird es in 2 Bytes konvertiert, und ein in UTF-8 kodiertes englisches Zeichen wird in 1 Byte konvertiert, wenn es in GBK kodiert ist in 1 Byte umgewandelt werden.

Was ist die Ursache für verstümmelte chinesische Schriftzeichen?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.

Lassen Sie uns zunächst darüber sprechen, was verstümmelte Zeichen sind.

Ich weiß nicht, ob jemals jemand so darüber nachgedacht hat. Eine Zeichenfolge enthält nicht nur Zeichen, sondern auch Kodierungsinformationen, die sie verbergen. Zum Beispiel String str = „Hallo“ in Java, das habe ich mir vorher gedacht, der String str verbirgt seine Codierungsmethode Unicode-Codierung oder GBK, ISO-8859-1 usw. Dieses Verständnis ist falsch. Das richtige Verständnis sollte sein, dass die Zeichenfolge, die die Leute in einer Datei sehen, das System ist, das die digitalen Informationen im Speicher liest und sie dann in einige Zeichen dekodiert Das heißt, wenn Sie zum Öffnen einer Textdatei doppelklicken, liest das System die digitalen Informationen im Speicher und zeigt sie an. Wenn Sie eine Textdatei speichern, kodiert das System die Datei mit der von Ihnen festgelegten Kodierungsmethode es in die Mitte. Verstümmelte Zeichen sind also auch einige Zeichen, nur seltsame Zeichen, und es gibt keinen „Code“.

Dann lasst uns über die Gründe für verstümmelte Codes sprechen

Wir sehen oft die Erklärung der Gründe für verstümmelte Codes im Internet: Verstümmelte Codes werden durch die Inkonsistenz zwischen der Decodierungsmethode und der Codierungsmethode verursacht. Dieser Satz selbst ist Nicht falsch, aber derselbe Satz selbst ist Der verstümmelte Code ist nur eine Zusammenfassung und hilft Ihnen nicht, den verstümmelten Code zu verstehen.

Die Frage, die wir stellen möchten, lautet also: Warum erscheinen verstümmelte Codes, wenn die Decodierungsmethode und die Codierungsmethode inkonsistent sind?

Hier sind die drei Kodierungsmethoden utf-8, gbk und iso-8859-1 als Beispiele.

     @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);
     }
Nach dem Login kopieren

Testen Sie die obige Methode und das gedruckte Ergebnis ist:

========中文字符utf-8=======
-28 -67  -96 -27  -91 -67  
========英文字符utf-8=======
104 63  104 
========中文字符gbk=========
-60 -29  -70 -61  
========英文字符gbk=========
104 63  104 
你好====gbk:浣犲ソ
------------------------------------------------------------------------------------
Nach dem Login kopieren

Man kann daraus schließen, dass:

Ein chinesisches Zeichen wird in 3 Bytes umgewandelt, wenn es mit utf-8 codiert wird, und es wird in 2 Bytes umgewandelt Bytes, wenn es mit GBK codiert ist;

Ein englisches Zeichen wird in 1 Byte konvertiert, wenn es in UTF-8 codiert ist, und wenn es in GBK codiert ist, wird es in 1 Byte konvertiert.

Aus der letzten Druckzeile in Kombination mit den Zeilen 29–31 des Codes ist ersichtlich, dass bei der Decodierung des Byte-Arrays utf8 im UTF-8-Modus keine verstümmelten Zeichen und das ursprüngliche „Hallo“ vorhanden sind " wird immer noch da sein, aber wenn es im GBK-Modus dekodiert wird. Beim Dekodieren erschienen drei verstümmelte Zeichen. Warum gibt es 3 Zeichen statt 2? 6/2=3.

Als nächstes sprechen wir über ISO-8859-1. Diese Kodierung wird in der englischen Serie verwendet, was bedeutet, dass sie kein Chinesisch darstellen kann (wenn Sie sie verwenden möchten, müssen Sie sich auf andere Kodierungen verlassen, die mit ISO-8859 kompatibel sind -1-Kodierungsmethode). Zeichen werden nicht als englische Fragezeichen '?' , alle englischen Zeichen verwenden eine feste Bytecode-Darstellung, mit Ausnahme der Unicode-Codierung).

     @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"));         
     }
Nach dem Login kopieren

Ergebnisse drucken

63
63
??
??
??
㼿
Nach dem Login kopieren

Erläuterung 63 =》?, alle Chinesen werden berücksichtigt?, also wenn dieser Code ausgeführt wird: byte[] bs = "Hallo".getBytes("iso-8859-1" );Informationen wurden verloren.

Execute String str = new String(bs, „any charset“); str ist nicht mehr gleich „Hallo“, sondern zwei Fragezeichen??. Daher stoßen wir in Tomcat häufig auf chinesische Schriftzeichen, die sich in eine lange Folge von ?????? verwandeln, was den Ursprung dafür darstellt.

In ISO-8859-1, UTF-8 und GBK stellt ein Bytecode ein englisches Zeichen dar.

Bei der Unicode-Codierung kann ein Bytecode kein Zeichen darstellen und es ist festgelegt, dass es zwei Bytecodes sein müssen (manchmal 4). kann einen Charakter darstellen.

Nachdem ich so viel gesagt habe, fragen sich viele Leute vielleicht, warum so viele Codierungsmethoden verwendet werden. Kann man sie nicht in UTF-8 vereinheitlichen, um alle Zeichen darzustellen?

Bei der Kodierung geht es nicht nur darum, ob beliebige Zeichen dargestellt werden können, sondern auch um die Übertragung und Speicherung.

1. UTF-8 kann tatsächlich fast alle bekannten Zeichen darstellen. Wie bereits erwähnt, stellen nur 3 Bytes ein chinesisches Zeichen in der UTF-8-Codierung dar, was offensichtlich Platz beansprucht und der Übertragung und Speicherung nicht förderlich ist (Übertragung und Speicherung erfolgen beide binär).

2 Zweifellos zeigt ein Byte an, dass a Das Zeichen spart am meisten Platz, z. B. iso-8859-1. Aber es gibt nicht nur englische Charaktere auf der Welt, sondern auch Charaktere aus verschiedenen Regionen und Ländern. Die Anzahl der Zeichen muss also größer als 2 hoch 8 sein.

Wenn man also die beiden oben genannten Punkte kombiniert, ergeben sich natürlich viele Codierungsmethoden.

Verstehen Sie die Regeln verschiedener Kodierungsmethoden: https://jingyan.baidu.com/article/020278118741e91bcd9ce566.html

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmierlehre! !

Das obige ist der detaillierte Inhalt vonWas ist die Ursache für verstümmelte chinesische Schriftzeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So lösen Sie verstümmelte chinesische Zeichen unter Linux So lösen Sie verstümmelte chinesische Zeichen unter Linux Feb 21, 2024 am 10:48 AM

Das verstümmelte Linux-Chinesisch-Problem ist ein häufiges Problem bei der Verwendung chinesischer Zeichensätze und Kodierungen. Verstümmelte Zeichen können durch falsche Dateikodierungseinstellungen, nicht installiertes oder eingestelltes Systemgebietsschema, Konfigurationsfehler bei der Terminalanzeige usw. verursacht werden. In diesem Artikel werden mehrere gängige Problemumgehungen vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Überprüfen Sie die Dateikodierungseinstellung. Verwenden Sie den Dateibefehl im Terminal, um die Kodierung der Datei anzuzeigen: file-ifilename

So lösen Sie verstümmelten Tomcat-Startcode So lösen Sie verstümmelten Tomcat-Startcode Dec 26, 2023 pm 05:21 PM

Lösungen für den verstümmelten Start von Tomcat: 1. Ändern Sie die Konfigurationsdatei von Tomcat. 3. Ändern Sie die Codierung des Befehlszeilenfensters. 5. Überprüfen Sie die Projektcodierung Datei; 7, versuchen Sie es mit anderen Lösungen. Detaillierte Einführung: 1. Ändern Sie die conf-Konfigurationsdatei von Tomcat, öffnen Sie das conf-Verzeichnis von Tomcat, suchen Sie die Datei „logging.properties“ usw.

So lösen Sie das Problem verstümmelter chinesischer Zeichen in Windows 10 So lösen Sie das Problem verstümmelter chinesischer Zeichen in Windows 10 Jan 16, 2024 pm 02:21 PM

Im Windows 10-System sind verstümmelte Zeichen häufig. Der Grund dafür ist häufig, dass das Betriebssystem einige Zeichensätze nicht standardmäßig unterstützt oder dass ein Fehler in den eingestellten Zeichensatzoptionen vorliegt. Um das richtige Medikament zu verschreiben, analysieren wir im Folgenden die tatsächlichen Betriebsabläufe im Detail. So lösen Sie verstümmelten Windows 10-Code: 1. Öffnen Sie die Einstellungen und suchen Sie nach „Zeit und Sprache“. 2. Suchen Sie dann nach „Sprache“. 3. Suchen Sie nach „Spracheinstellungen verwalten“. 4. Klicken Sie hier auf „Regionale Systemeinstellungen ändern“. 5. Überprüfen Sie, wie gezeigt, und klicken Sie Stellen Sie einfach sicher.

Methoden zur Lösung des Problems verstümmelter chinesischer Zeichen in PHP Dompdf Methoden zur Lösung des Problems verstümmelter chinesischer Zeichen in PHP Dompdf Mar 05, 2024 pm 03:45 PM

Methoden zur Lösung des chinesischen verstümmelten Problems von PHPDompdf PHPDompdf ist ein Tool zum Konvertieren von HTML-Dokumenten in PDF-Dateien. Es ist leistungsstark und einfach zu verwenden. Allerdings stößt man bei der Verarbeitung chinesischer Inhalte manchmal auf das Problem verstümmelter chinesischer Schriftzeichen. In diesem Artikel werden einige Methoden zur Lösung des Problems verstümmelter chinesischer Zeichen in PHPDompdf vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Bei der Verwendung von Schriftartdateien zur Verarbeitung chinesischer Inhalte besteht ein häufiges Problem darin, dass Dompdf standardmäßig keine chinesischen Inhalte unterstützt.

Bearbeitungsmethode zur Lösung des Problems verstümmelter Zeichen beim Öffnen von DLL-Dateien Bearbeitungsmethode zur Lösung des Problems verstümmelter Zeichen beim Öffnen von DLL-Dateien Jan 06, 2024 pm 07:53 PM

Wenn viele Benutzer Computer verwenden, werden sie feststellen, dass es viele Dateien mit der Endung dll gibt, aber viele Benutzer wissen nicht, wie man solche Dateien öffnet. Wer es wissen möchte, schaut sich bitte die folgenden Details an So öffnen und bearbeiten Sie DLL-Dateien: 1. Laden Sie eine Software namens „Exescope“ herunter, laden Sie sie herunter und installieren Sie sie. 2. Klicken Sie dann mit der rechten Maustaste auf die DLL-Datei und wählen Sie „Ressourcen mit Exescope bearbeiten“. 3. Klicken Sie dann im Popup-Fehlerfeld auf „OK“. 4. Klicken Sie dann im rechten Bereich auf das „+“-Zeichen vor jeder Gruppe, um den darin enthaltenen Inhalt anzuzeigen. 5. Klicken Sie auf die DLL-Datei, die Sie anzeigen möchten, klicken Sie dann auf „Datei“ und wählen Sie „Exportieren“. 6. Dann können Sie

Lösen Sie das Problem verstümmelter Zeichen im Win11-Notizblock Lösen Sie das Problem verstümmelter Zeichen im Win11-Notizblock Jan 05, 2024 pm 03:11 PM

Einige Freunde möchten einen Notizblock öffnen und stellen fest, dass ihr Win11-Notizblock verstümmelt ist und nicht wissen, was sie tun sollen. Tatsächlich müssen wir im Allgemeinen nur die Region und die Sprache ändern. Win11 Notepad ist verstümmelt: Verwenden Sie im ersten Schritt die Suchfunktion, suchen Sie und öffnen Sie die „Systemsteuerung“. Klicken Sie im zweiten Schritt auf „Datum, Uhrzeit oder Zahlenformat ändern“ unter „Uhr und Region“. oben auf der Karte. Der vierte Schritt besteht darin, unten auf „Regionale Systemeinstellungen ändern“ zu klicken. Der fünfte Schritt besteht darin, die aktuellen regionalen Systemeinstellungen auf „Chinesisch (vereinfacht, China)“ zu ändern und zum Speichern auf „OK“ zu klicken.

So lösen Sie verstümmelte Filezilla-Zeichen So lösen Sie verstümmelte Filezilla-Zeichen Nov 20, 2023 am 10:16 AM

Zu den Lösungen für verstümmelte Filezilla-Zeichen gehören: 1. Überprüfen Sie die Datei selbst. 3. Überprüfen Sie die Serverkonfiguration. 6. Überprüfen Sie, ob es Netzwerkprobleme gibt . Suchen Sie technischen Support. Um das Problem der verstümmelten FileZilla-Zeichen zu lösen, müssen Sie von mehreren Aspekten ausgehen, schrittweise die Ursache des Problems untersuchen und entsprechende Maßnahmen ergreifen, um es zu beheben.

Häufige Ursachen und Lösungen für verstümmelte chinesische Zeichen bei der MySQL-Installation Häufige Ursachen und Lösungen für verstümmelte chinesische Zeichen bei der MySQL-Installation Mar 02, 2024 am 09:00 AM

Häufige Gründe und Lösungen für verstümmelte chinesische Zeichen bei der MySQL-Installation MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem. Bei der Verwendung kann es jedoch zu Problemen mit verstümmelten chinesischen Zeichen kommen, die Entwicklern und Systemadministratoren Probleme bereiten. Das Problem verstümmelter chinesischer Zeichen wird hauptsächlich durch falsche Zeichensatzeinstellungen, inkonsistente Zeichensätze zwischen dem Datenbankserver und dem Client usw. verursacht. In diesem Artikel werden die häufigsten Ursachen und Lösungen für verstümmelte chinesische Zeichen bei der MySQL-Installation ausführlich vorgestellt, um allen zu helfen, dieses Problem besser zu lösen. 1. Häufige Gründe: Zeichensatzeinstellung