¿Qué significa que Java utilice Unicode como codificación predeterminada?
Los principiantes de Java conocerán un concepto. La codificación predeterminada de Java es uincode, pero esta oración solo aparece en el libro y no se explica lo que significa. De hecho, para un programador, no es necesario comprender el método de codificación de una plataforma, porque esta es su forma interna de procesar caracteres y tiene poco que ver con nuestro programa de diseño de alto nivel (si es que tiene algo que ver). qué hacer con esto, una es que estás familiarizado con esta plataforma, la otra es que los personajes con los que tienes que lidiar son tan extraños que debes considerar si el compilador incluye este personaje). Pero esto no significa que no necesitemos considerar los problemas de codificación en absoluto al programar. Al contrario, los problemas de codificación son la base de la comunicación entre sistemas.
Entonces, ¿dónde utiliza Java los problemas de codificación? Los más comunes son los arroyos, de los cuales se muestran dos ejemplos a continuación. 1. Use Java para crear un archivo en Linux (aquí no se especifica ninguna codificación en el código predeterminado), que incluye inglés y chino. Luego use Java para leer el archivo en Windows y generarlo. Como resultado, los caracteres chinos aparecen confusos; 2. Los dos programas Java en el teléfono Android y la computadora intercambian información similar a QQ, pero los caracteres chinos están todos confusos. Surgen dudas, ¿no es Java multiplataforma y la codificación predeterminada es Unicode? Como se mencionó anteriormente, la codificación del sistema Java administra variables internas y otra información, está unificada y no se puede cambiar. Sin embargo, la razón de los caracteres confusos en los dos ejemplos anteriores es que la información de los caracteres se lee desde el mundo exterior y la codificación. El método afecta directamente la visualización de caracteres, por ejemplo, un carácter en gbk tiene 1 o 2 bytes, el chino tiene 2 y utf8 tiene de 1 a 4 bytes, el chino tiene 3 y utf16 tiene 2 bytes fijos, por lo que es obvio. con el mismo número de bytes, puede expresar un carácter chino cada 2 o 3 bytes. Por supuesto, las diferentes codificaciones son diferentes, e incluso si gbk y utf16 representan un carácter chino con dos bytes, el mismo binario también corresponde a diferentes caracteres. Por lo tanto, después de leer esta información de bytes desde el exterior, debe especificar la codificación, como nueva
Cadena (byte [], conjunto de caracteres). Por supuesto, también puede especificarla al crear la secuencia. como nuevo
p>InputStreamReader (InputStream, charset), etc., pero no existe un constructor correspondiente como BufferedReader, por lo que solo puede usar el InputStreamReader anterior como parámetro.
Resumen:
1. La codificación predeterminada de cadenas y transmisiones (incluidas la salida y la entrada de la consola) se basa en el sistema, es decir, jvm asume que esta información es creada por el sistema actual, Windows El chino predeterminado es gbk, Linux y Mac son utf8 (una vez más, ¿qué significan utf8 y unicode? En pocas palabras, unicode es un estándar que corresponde a cada carácter con un código binario único, y utf es unicode
formato de transformación
, es decir, cómo representar cada código binario único, utf8, utf16 y utf32 son métodos de codificación diferentes);
2. IDE Se utiliza para acceder a archivos fuente de Java, lo cual es muy importante para compartir código en diferentes plataformas del sistema;
3. El compilador de Java usa utf8, es decir, el archivo de clase se almacena en utf8, porque en comparación con utf16. , utf8 ocupa menos memoria cuando se procesa en inglés y la mayoría de los programas están en inglés
4. El método de codificación cuando se ejecuta jvm es utf16, es decir, jvm usa utf8 para leer el programa. del archivo de clase y luego lo convierte a utf16 Cadena codificada, debido a que utf16 tiene 2 bytes, la longitud unificada es más conveniente para que jvm la aplique a matrices y otras operaciones
5. utf8, y hay conjuntos de caracteres en las primeras líneas de la información html. Al analizar la página web descargada, preste atención a la codificación. Google y Baidu también usan utf8 al analizar los resultados de búsqueda, por lo que el problema de la codificación es muy importante. a Internet. Por supuesto, he sufrido mucho, quien dijo que la codificación de Windows no es utf8;
6. Me pregunto si lo ha experimentado si la codificación es incorrecta. El chino aparecerá confuso, pero el inglés detrás del chino es correcto, lo cual no es razonable. ¿No es similar a la huesuda tarjeta Nomi? Si uno está equivocado, el resto se caerá. Así que no subestimes a los expertos que formulan codificaciones. Por ejemplo, los primeros dígitos de cada byte en utf8 se usan para representar cierta información, y utf16 también los tiene, por lo que crearon utf16le y utf16be