Heim > Java > javaLernprogramm > Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

WBOY
Freigeben: 2022-08-24 09:09:20
nach vorne
2450 Leute haben es durchsucht

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java, das hauptsächlich die Implementierungsmethode von Java zur Spezifikation der Codierung beim Erstellen einer Datei vorstellt. Der Artikel stellt es ausführlich anhand von Beispielcode vor, der für das Studium oder die Arbeit von gewisser Bedeutung ist Lernwert, ich hoffe, es wird für alle hilfreich sein.

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Empfohlenes Studium: „Java-Video-Tutorial

Vorwort: Vor kurzem habe ich das Wissen im Zusammenhang mit Java IO Stream erlernt und wollte das erlernte Wissen durch Lesen und Schreiben von Dateien üben und festigen. Als ich die File-Klasse zum Erstellen einer Datei verwendete, dachte ich plötzlich: Wie soll ich die von der Datei verwendete Codierung angeben? Dann dachte ich: Wie soll ich die Kodierung einer Datei überprüfen?

1. Problemanalyse

Besuchen Sie zunächst das Internet, um die Antwort zu finden:

FileInputStream fis=new FileInputStream(“xxxx.txt”);
OutputStreamWriter osw=new OutputStreamWriter(fis,“UTF-8”);
Nach dem Login kopieren
Nach dem Login kopieren

Der obige Code bedeutet wahrscheinlich, dass beim Schreiben einer Datei die geschriebenen Zeichen in UTF-8 codiert sind anders als erwartet. Ich möchte die Kodierung beim Erstellen der Datei angeben. Wie das Folgende:

File myfile = new File("test.txt”, “UTF-8”);
if (!myfile.exists()) myfile.createNewFile();
Nach dem Login kopieren

Also habe ich die offizielle Java API 8-Dokumentation überprüft und festgestellt, dass File keinen Konstruktor bereitstellt, der die Zeichenkodierung angeben könnte.

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Gleichzeitig werden keine anderen Methoden für den Zugriff auf die Zeichenkodierung wie Set oder Get bereitgestellt, was darauf hinweist, dass die Zeichenkodierung kein inhärentes Attribut der Datei ist. Wie zum Beispiel der Zeitpunkt der Dateierstellung, der Dateiänderungszeit, ob sie lesbar, beschreibbar und ausführbar ist, sind dies die inhärenten Attribute der Datei oder Metainformationen, sie sind Teil der Datei.

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

2. Zeichenkodierung

Wir wissen, dass alle im Computer gespeicherten Informationen eine Zeichenfolge von 01 sind und Text keine Ausnahme darstellt.

Die Verarbeitung von Zeichen umfasst zwei Prozesse: Kodierung und Dekodierung

Kodierung: „Zuordnung“ der Zeichen zur 01-Zeichenfolge
Dekodierung: „Zuordnung“ der 01-Zeichenfolge zu den Zeichen

Verschiedene Zeichenkodierungen, wie z Da GBK, UTF-8, Kodierung und Dekodierung unterschiedliche Regeln verwenden.

Für die gleiche Textzeichenfolge: „China“ verwenden Sie die UTF-8-Kodierung, um sie zu speichern. Im Allgemeinen werden drei Bytes verwendet, um ein chinesisches Zeichen zu speichern (die Hexadezimalform der zugrunde liegenden 01-Zeichenfolge).

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Verwenden Sie zum Speichern die GBK-Codierung und verwenden Sie zwei Bytes zur Darstellung eines chinesischen Zeichens.

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Wenn wir den Text im Texteditor schreiben und speichern, „ordnet“ der Editor den Text entsprechend dem von Ihnen festgelegten Zeichenkodierungstyp einer Zeichenfolge von 01 zu.

Der von Ihnen festgelegte Zeichentyp ist lediglich eine Konvertierungsregel für den Editor, um Text in 10 Zeichenfolgen zu kodieren, und ist kein Attribut des Textes.

Wenn der Editor die Textdatei öffnet, wird nicht die zugrunde liegende 01-Zeichenfolge angezeigt, sondern Text. Dies liegt daran, dass der Editor eine bestimmte Textkodierung verwendet, um die 01-Zeichenfolge in Zeichen zu dekodieren. Wenn bei der Dekodierung die verwendete Zeichenkodierung mit der Kodierung übereinstimmt oder kompatibel ist, kann der Text korrekt angezeigt werden. Wenn die beim Dekodieren verwendete Zeichenkodierung nicht mit der Kodierung übereinstimmt oder nicht kompatibel ist, werden die Zeichen verstümmelt.

Zum Beispiel habe ich eine Textdatei mit GBK-Codierung, der Inhalt lautet „Wann kommt der helle Mond heraus?“,

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Java-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei

Ich verwende VS-Code (einen sehr benutzerfreundlichen Texteditor von Microsoft) Das Öffnen der Datei bedeutet in der Terminologie das Dekodieren der Datei. Die standardmäßig verwendete Textkodierung ist UTF-8, und die Dekodierung ist dieselbe. Da die unterste Ebene meines Textes jedoch eine GBK-codierte 01-Zeichenfolge (zwei Bytes und ein Zeichen) ist, führt die Verwendung von UTF-8 zum Dekodieren der 01-Zeichenfolge aufgrund inkonsistenter Kodierung und Dekodierung unweigerlich zu verstümmelten Zeichen. Zu diesem Zeitpunkt wird die dekodierte Datei nicht verstümmelt, solange Sie die entsprechende GBK-Kodierung manuell auswählen.

Die verstümmelten Zeichen veranschaulichen auch von der Seite, dass die Zeichenkodierung kein inhärentes Attribut der Datei ist.

Ich habe so viel gesagt, nur um diesen Punkt zu veranschaulichen: Die Zeichenkodierung ist die beim Dekodieren und Kodieren verwendete Regel und kein inhärentes Attribut der Datei.

Ich frage mich, warum die Zeichenkodierung nicht als Teil der Dateieigenschaften festgelegt wurde?

Angenommen, es kann auf GBK eingestellt und eingestellt werden, dann muss das Betriebssystem die Funktion aufrechterhalten. Genauso wie eine Datei nicht beschreibbar ist, verweigert das Betriebssystem das Schreiben. Die Bytes, die das Betriebssystem schreiben muss, müssen den GBK-Codierungsanforderungen entsprechen Betriebssystemanforderungen Die Überprüfung der Legalität von Bytes erfordert viel Leistungsaufwand und ist sogar unmöglich zu implementieren, da einige spezielle Bytes entweder GBK oder UTF-8 darstellen können, was mehrdeutig ist. Was bringt das nun? Soll der Editor beim Öffnen der Datei die richtige Kodierung basierend auf den Kodierungseigenschaften auswählen? Es besteht keine Notwendigkeit, anhand der ersten paar Bytes des Inhalts abzuleiten, welche Codierung Ihr 01-String verwendet. Darüber hinaus können Sie die für die Dekodierung verwendete Zeichenkodierung auch manuell festlegen.

3. Problem gelöst

Beim Erstellen einer Datei kann die Kodierung der Datei nicht angegeben werden. Wenn Sie Text in eine Datei schreiben (z. B. Ctrl + S Speichern in einem Texteditor, der im Wesentlichen einen Schreibvorgang ausführt), können Sie den Text in eine Kodierungsregel mit der Zeichenfolge 01 konvertieren.

Für Java-Programme lautet der Code wie folgt. Dies ist der am Anfang des Artikels erwähnte Code:

FileInputStream fis=new FileInputStream(“xxxx.txt”);
OutputStreamWriter osw=new OutputStreamWriter(fis,“UTF-8”);
Nach dem Login kopieren
Nach dem Login kopieren

Empfohlenes Lernen: „Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonJava-Implementierungsmethode zur Angabe der Codierung beim Erstellen einer Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage