Heim Java JavaBase Beim Konvertieren von Byte[] in String in Java erscheinen verstümmelte Zeichen

Beim Konvertieren von Byte[] in String in Java erscheinen verstümmelte Zeichen

Nov 27, 2019 am 09:28 AM
java string 乱码

Beim Konvertieren von Byte[] in String in Java erscheinen verstümmelte Zeichen

Zuallererst ist es sehr einfach, das häufig verwendete Byte[] direkt in einen String umzuwandeln:

public static void main(String[] args) {  
String str="我是中国人";  
byte[] arr=str.getBytes();  
System.out.println("打印:"+arr);
for(byte e : arr) {
System.out.print(e + " ");
}
String str2=new String(arr);  
System.out.println("\n打印2:"+str2);  
}
Nach dem Login kopieren

Empfohlene Java-bezogene Videos: Java-Lernen

Das Ausgabeergebnis von oben lautet beispielsweise:

打印:[B@15db9742
-50 -46 -54 -57 -42 -48 -71 -6 -56 -53 
打印2:我是中国人
Nach dem Login kopieren

Sie werden die Codierung kennen, wenn Sie dies sehen. Byte ist ein Byte und chinesische Zeichen sind zwei Bytes. Daher erfordern fünf chinesische Schriftzeichen einen digitalen Speicher von zehn Byte. Dann werden die Zahlen in chinesische Schriftzeichen umgewandelt, und in der Mitte erfolgt ein Prozess zur Kodierung von Standards.

Wie wird die Zeichenkodierung in Java gehandhabt?

JAVA verwendet seine eigene String-Klasse und String-Klassenobjekte müssen keine Codierungstabelle angeben! Warum weiß es, welche Zeichen die einzelnen Zahlen darstellen? Dies liegt daran, dass die Zeicheninformationen in String in der UNICODE-Codierung gespeichert werden. Zur Darstellung von Zeichen (beachten Sie, dass es sich um Einzelzeichen handelt) verfügt JAVA auch über den Datentyp char und seine Größe ist eine feste Länge von zwei 8-stelligen Hexadezimalziffern, also 0 bis 65535. Der Zweck besteht darin, einem Zeichen in UNICODE zu entsprechen.

Wenn Sie eine UNICODE-Nummer in einem String erhalten möchten, können Sie die Methode getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) verwenden, um ein char[] zu erhalten. Dieses char[] stellt das String-Zeichen dar und ist eine in der UNICODE-Codierung codierte Zahl Tisch.

Warum gibt es verstümmelten Code beim Konvertieren von Byte[] in String?

Wie oben erwähnt, sind die Codierungsstandards natürlich unterschiedlich. Beispielsweise wird das chinesische Wort „dang“ im GB2312-Standard durch zwei achtstellige Zahlen 0xB5 und 0xB1 dargestellt. Auf dem englischen System gibt es keine GB2312-Codierungstabelle. Wenn Sie 0xB5, 0xB1 angeben, wird es als ASCII behandelt. Wenn Sie es in Java einfügen, wird es gemäß seiner eigenen UNICODE-Spezifikation verarbeitet. Wenn die Spezifikationen also unterschiedlich sind, werden seltsame Ergebnisse angezeigt, dh verstümmelte Zeichen.

Wie lösen wir also das verstümmelte Problem der Konvertierung von Byte[] in String?

Es hängt davon ab, woher byte[] kommt. Es kommt häufig vor, dass ein Bild in ein Byte [] und dann in ein String-Stream-Objekt umgewandelt werden muss, um es an andere Orte zu übertragen. Der Empfänger wandelt es dann in ein Byte [] und dann in ein Bild um.

1. Wenn Byte[] direkt übertragen wird, kommt es zu Datenverlust, wenn Byte[] zu lang ist. Denn nicht alle Bytekombinationen können auf char abgebildet werden.

2. Verwenden Sie die allgemeine Base64-Kodierungsspezifikation. Die Codierungsspezifikation von Base64 besteht darin, allgemeine Zeichen in eine 6-Bit-Binärdarstellung umzuwandeln (64 werden häufig verwendet, daher wird es Base64 genannt). Wie man schreibt, gibt es vorgefertigte Werkzeugklassen wie folgt:

import org.apache.commons.codec.binary.Base64;  
public class UtilHelper {     
    //base64字符串转byte[]  
    public static byte[] base64String2ByteFun(String base64Str){  
        return Base64.decodeBase64(base64Str);  
    }  
    //byte[]转base64  
    public static String byte2Base64StringFun(byte[] b){  
        return Base64.encodeBase64String(b);  
    }  
}
Nach dem Login kopieren

Auf diese Weise kann die Standardkonvertierung zwischen Byte[] und String gewährleistet werden.

Weitere verwandte Artikel und Tutorials werden empfohlen: Erste Schritte mit Java von Grund auf

Das obige ist der detaillierte Inhalt vonBeim Konvertieren von Byte[] in String in Java erscheinen verstümmelte Zeichen. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen 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)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

See all articles