Warum wird UTF-8 in der Klassendatei und UTF-16 zur Laufzeit verwendet?

9

Warum .class ist UTF-8, aber Laufzeit .class ist UTF-16?

    
Jerry_W 30.12.2016, 09:26
quelle

3 Antworten

6
  

Warum .class ist UTF-8

Für Klassen, die für ein westliches Publikum geschrieben wurden, normalerweise meist ASCII, ist dies die kompakteste Kodierung.

  

aber Laufzeitklasse. ist UTF-16?

Zur Laufzeit ist es schneller, Zeichenfolgen zu bearbeiten, die eine Codierung mit fester Breite verwenden ( Why Java char benutzt UTF-16? ), also wurde UCS-2 gewählt. Dies wird durch den Wechsel von UCS-2 zu UTF-16 kompliziert, wodurch diese eine andere Codierung mit variabler Breite wird.

Wie in den Kommentaren zu dieser Frage angemerkt, ermöglicht es JEP 254 , dass sich die Laufzeitdarstellung in etwas platzsparender ändert (zB Latin-1).

    
Joe 30.12.2016 10:17
quelle
0

Der Quellcode kann eine beliebige Kodierung haben. Sie können dem Compiler auch mitteilen, welche Kodierung verwendet werden soll. Verwenden Sie dazu -encoding Flagge.

Die JVM verwendet UTF-16 und ist in der JLS :

  

Die Java-Programmiersprache repräsentiert Text in Sequenzen von 16-Bit-Code-Einheiten unter Verwendung der UTF-16-Codierung.

    
Maroun 30.12.2016 09:37
quelle
-2

javac encoding :

  

-encoding encoding Legen Sie den Namen der Quelldatei-Codierung wie EUC-JP und UTF-8 fest. Wenn -encoding nicht angegeben ist, wird der Standard der Plattform verwendet   Konverter wird verwendet.

JVM-Codierung :

  

Jede Instanz der Java Virtual Machine hat einen Standardzeichensatz,   Das kann oder darf nicht einer der Standard-Zeichensatz sein. Der Standard   charset wird beim Start der virtuellen Maschine und in der Regel bestimmt   hängt davon ab, welches Gebietsschema und welcher Zeichensatz vom zugrunde liegenden Element verwendet werden   Betriebssystem.

    
puvi 30.12.2016 09:51
quelle

Tags und Links