studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones java character-encoding platform

java - reales - libro de android studio en español pdf



Java: juego de caracteres predeterminado de la plataforma en diferentes plataformas? (2)

Para las instalaciones de Windows y Linux en el "mundo occidental" sé lo que eso significa.

Probablemente no tan bien como crees.

Pero pensando en plataformas rusas o asiáticas, no estoy seguro de cuál es el juego de caracteres predeterminado de su plataforma.

Por lo general, es la codificación históricamente utilizada en su país.

(solo UTF-16?).

Definitivamente no. El uso de la computadora se extendió ampliamente antes de que existiera el estándar Unicode, y cada área de lenguaje desarrolló una o más codificaciones que podrían soportar su lenguaje. Aquellos que necesitaban menos de 128 caracteres fuera de ASCII típicamente desarrollaban un "ASCII extendido", muchos de los cuales fueron estandarizados con el tiempo como ISO-8859 , mientras que otros desarrollaron codificaciones de dos bytes, a menudo varios compitiendo. Por ejemplo, en Japón, los correos electrónicos generalmente usan JIS , pero las páginas web usan Shift-JIS , y algunas aplicaciones usan EUC-JP . Cualquiera de estos podría encontrarse como la codificación predeterminada de la plataforma en Java.

Es todo un desastre, que es exactamente por qué se desarrolló Unicode. Pero el desorden no ha desaparecido todavía y aún tenemos que lidiar con él y no deberíamos hacer suposiciones sobre qué codificación se debe interpretar como un conjunto de bytes dados. No hay tal cosa como el texto simple .

Algunos códigos heredados se basan en el juego de caracteres predeterminado de la plataforma para las traducciones. Para las instalaciones de Windows y Linux en el "mundo occidental" sé lo que eso significa. Pero pensando en plataformas rusas o asiáticas, no estoy seguro del juego de caracteres predeterminado de su plataforma (¿solo UTF-16?).

Por lo tanto, me gustaría saber qué obtendría al ejecutar la siguiente línea de código:

System.out.println("Default Charset=" + Charset.defaultCharset());

Editar: No quiero discutir los problemas de los conjuntos de caracteres y su diferencia para unicode aquí. Solo quiero recopilar qué sistemas operativos darán como resultado un juego de caracteres específico. Por favor publique solo valores concretos!


Esa es una configuración específica para el usuario. En muchos sistemas Linux modernos, es UTF-8. En Mac, es MacRoman. En los Estados Unidos en Windows, a menudo es CP1250, en Europa es CP1252. En China, a menudo encuentras chino simplificado (Big5 o un GB *).

Pero ese es el sistema predeterminado, que cada usuario puede cambiar en cualquier momento. Cuál es probablemente la solución: establezca la codificación cuando inicie su aplicación utilizando el file.encoding propiedad del sistema file.encoding

Vea esta respuesta de cómo hacer eso. Sugiero poner esto en una pequeña secuencia de comandos que inicia su aplicación, por lo que el usuario predeterminado no está contaminado.