Perché Java usa UTF-16 per la rappresentazione di stringhe interne?

29

Immagino che la ragione sia veloce, array come l'accesso al personaggio all'indice, ma alcuni caratteri non si adattano a 16 bit, quindi non funzionerebbe ...

Quindi, se devi comunque gestire casi speciali, perché non usare UTF-8?

    
posta mrpyo 07.11.2012 - 14:40
fonte

2 risposte

45

Perché era UCS-2 , che era una bella lunghezza fissa 16 -bits. Certo, 16 bit si è rivelato non essere abbastanza. Hanno riadattato l'UTF-16 in cima.

    
risposta data 07.11.2012 - 14:45
fonte
14

Per la parte principale, per semplicità e semplicità di prova del futuro. Se è stata una ragione sbagliata e il modo sbagliato per farlo è una domanda diversa.

Puoi vedere alcune ragioni dietro alcune delle loro decisioni di progettazione in questo documento sulla transizione del 2004 a Java 5 e UTF-16, che spiega anche alcune delle carenze: Caratteri supplementari nella piattaforma Java e vedi Perché l'ecosistema Java utilizza diverse codifiche in tutto lo stack? .

Per maggiori dettagli sulle insidie dell'uso di UTF-16, e perché UTF-8 è probabilmente un'opzione migliore in generale, vedi Se UTF-16 deve essere considerato dannoso? e UTF-8 Ovunque manifesto.

    
risposta data 07.11.2012 - 14:43
fonte

Leggi altre domande sui tag