Sobre el carbón java representaron unos pocos bytes, caracteres ocupan unos pocos bytes

Solemos decir, en una charla de Java 2 bytes, se puede añadir dígitos caracteres participación en el formato de codificación de barrera es diferente, como los caracteres chinos gbk 2 bytes, utf8 en la mayoría de 3 bytes , un pequeño número es cuatro. Y todos los personajes de un programa Java que pueden resumirse de la manera como char c = 'palabra', por lo que la pregunta es, cuando el programa Java se ejecuta exactamente caracteres representó unos pocos bytes de la misma?
--------------------------
Antes de discutir este tema, hay que distinguir entre Unicode y UTF.
1, Unicode: número uniforme de caracteres, con la única entre el carácter y el mapeo número. Aumentar el número de símbolos, superó el millón. Detalles: [ https://zh.wikipedia.org/zh-cn/Unicode ]
2, UTF: conversor de formato Unicode (Unicode Transformation Format). En la definición del número de codificación Unicode. UTF-8 y utf16 es una de las dos implementaciones. Utf8 en el que una longitud variable, dicha longitud puede ser de 1 a 6 bytes; UTF16 de longitud variable, dicha longitud puede ser 2 o 4 bytes. Detallado: la UTF8 [ https://zh.wikipedia.org/zh-cn/UTF-8 ] UTF16 [ https://zh.wikipedia.org/zh-cn/UTF-16 ]
A continuación, para distinguir el código de código (codificación interna) y un (codificación externa) exterior.
1, el código: un tiempo de ejecución de lenguaje, que Char y la cadena de codificación en la memoria.
2, el código externo: Además del código interno, el código exterior son todos.
Se hace notar que los archivos de código de codificación de objetos (archivos ejecutables o archivos de clase) compilar el código fuente generado en el código externo pertenece.
Mira el código interno
El código interno JVM UTF16 emplea. Temprano, UTF16 de 2 bytes de longitud fija codificada, dos bytes símbolo de 65536 tipos (de hecho realmente indica que menos), entonces lo suficiente para representar todos los caracteres Unicode. Sin embargo, con el aumento del carácter Unicode, 2 bytes pueden no representar todos los caracteres, UTF16 utiliza dos o cuatro bytes que codifican de manera completa. Java para hacer frente a esta situación, teniendo en cuenta los requisitos de compatibilidad con versiones anteriores, char Java está representado por un par de caracteres de 4 bytes esa necesidad. Así, java en el carbón está ocupado por dos bytes, pero algunos personajes requieren de dos char a representar.
detalles:
código externo
archivos de clase Java en UTF-8 para almacenar el carácter, es decir, las cuentas carácter de clase de 1 a 6 bytes.
Cuando serialización Java, también se utiliza UTF8 caracteres de codificación, lo que representa caracteres 1-6.
resumen:
1, char java en el (memoria de funcionamiento) código interno usando el UTF16 codificada, Char un ocupa dos bytes, pero algunos caracteres requieren dos Char expresó. Así, un personaje ocupará 2 o 4 bytes.
2, java código extraño que codifica UTF8 uso Char de un carácter tarda de 1 a 6 bytes.
3, UTF16 codificación, el carácter Inglés es de dos bytes; la gran mayoría de los caracteres chinos (en particular los caracteres chinos) ocupa dos bytes, caracteres individuales (codificados con Unicode agregado en los finales de los caracteres chinos, es decir generalmente poco comunes rara vez se utilizan ) ocupa cuatro bytes.
4, la codificación UTF8, los caracteres de un byte Inglés uno; la gran mayoría de los caracteres chinos ocupan tres bytes, cuatro bytes para caracteres individuales.
----------------------------------------------
En resumen, el uso de Java Runtime utf16 de codificación, la mayoría de kanji 2 bytes, un char es suficiente, unos 4 bytes necesarios para representar dos Char.
Descripción: utf16 generalmente caracteres de 2 bytes, CJKV extendida del área B, la zona C se extienden, caracteres extendidos D regiones de cuatro bytes.

Supongo que te gusta

Origin www.cnblogs.com/kakaisgood/p/12533831.html
Recomendado
Clasificación