He leído que es una mala idea utilizar la codificación de caracteres predeterminada de la plataforma, por ejemplo, al leer un archivo de texto e importar el texto en matrices, etc. ¿Podría explicar cómo eso podría afectar rendimiento de la plataforma, y cómo superar ese problema? ¿Hay una codificación que debería usarse para aplicaciones multiplataforma? Gracias¿Cómo afecta la codificación de caracteres predeterminada de la plataforma al rendimiento multiplataforma
Respuesta
No se trata de rendimiento, sino de mostrar y leer correctamente el texto codificado. Hay un número de maneras de lidiar con el problema:
- establecer una opción de JVM
-Dfile.encoding=utf-8
- siempre utilizar los métodos sobrecargados con un parámetro de codificación de caracteres. Estos son los de
String
,Reader
,Writer
y más.
Creo que este último es un deber. Si siempre configura la opción jvm, funcionará, pero si olvida configurarla en algún momento, habrá fallas inesperadas en lugares aleatorios.
Y la otra pregunta: adhiérase a UTF-8.
Véase también this question.
Por lo general, no es un problema, si los archivos leídos y escritos no se intercambian entre plataformas. Pero si tiene, por ejemplo, un archivo de configuración creado en Windows (Win1252, similar a la codificación ISO8859-1), y luego inicia tu aplicación en un Linux reciente (codificación UTF-8), el archivo de configuración tendrá problemas con casi todos los caracteres por encima de 127 (como alemán Umlauts ä , ö, ü, o el signo €, o caracteres similares).
En este caso solo especifique que siempre usa cualquiera de las codificaciones, y quédese con ella. Si solo usa archivos simples ASCII (no latinos extendidos), no tendrá problemas hasta el momento.
La codificación predeterminada varía de sistema operativo a sistema operativo e incluso entre usuarios en la misma máquina en el caso de algunas instalaciones multilingües. Esto significa que los datos de caracteres escritos por la aplicación variarán y no serán legibles/aparecerán corruptos si se leen con una codificación predeterminada diferente. El carácter Euro (€) codificará como los bytes 80
bajo windows-1252, A4
bajo ISO-8859-15 y E2 82 AC
bajo UTF-8.
Las codificaciones heredadas pueden causar data loss ya que muchas de ellas solo admiten un rango estrecho de puntos de código.
El only supported way para cambiar la codificación predeterminada es cambiarla en el sistema operativo.
En general, es mejor ser explícito al elegir codificaciones y preferir una codificación Unicode sin pérdida (generalmente UTF-8). La decisión de hacer que las codificaciones "ANSI" sean las predeterminadas en Windows, por ejemplo, tenía más sentido cuando era compatible con Windows 95.
- 1. Codificación de caracteres Javascript predeterminada?
- 2. codificación de la plataforma maven
- 3. Codificación de caracteres predeterminada de Android
- 4. ¿Cómo afecta la llamada al método el rendimiento en Java?
- 5. ¿La ofuscación afecta el rendimiento?
- 6. ¿Cómo afecta un registro de transacciones grande al rendimiento?
- 7. En SQL, ¿cómo afecta el uso de DISTINCT al rendimiento?
- 8. La determinación de caracteres por defecto de la plataforma en Java
- 9. Codificación de caracteres de textarea
- 10. ¿Cómo afecta la sugerencia del índice SQL al rendimiento de la consulta?
- 11. ¿Cómo afecta la función de "cortar y pegar" la codificación de caracteres y qué puede salir mal?
- 12. ¿Cómo afecta la verbosidad de los identificadores al rendimiento de un programador?
- 13. ¿Cuál es la codificación predeterminada de la JVM?
- 14. ¿Cuál es la codificación predeterminada para System.IO.File.ReadAllText
- 15. ¿El número de columnas afecta el rendimiento de la consulta?
- 16. ¿La cantidad de espacios de nombres afecta el rendimiento?
- 17. ¿El tamaño de la tabla afecta el rendimiento de INSERTAR?
- 18. ¿Configurando la codificación predeterminada de PHP a utf-8?
- 19. ¿Cómo establecer la codificación predeterminada del sitio web de IIS?
- 20. z-index, ¿cómo afecta el rendimiento?
- 21. ¿Cómo afecta la cláusula IN el rendimiento en Oracle?
- 22. Cómo cambiar la codificación de caracteres de XmlReader
- 23. Cómo configurar la codificación predeterminada en Visual Studio 2010
- 24. ¿Cuál es la codificación predeterminada para las cadenas C?
- 25. ¿La colocación de un bloque try-catch afecta el rendimiento?
- 26. ¿Especifica HTML5 una codificación de caracteres predeterminada para documentos HTML si no se proporciona codificación de caracteres?
- 27. ¿Cómo cambiar la codificación de caracteres en UIWebView?
- 28. ¿Cómo corrijo la codificación de caracteres de un archivo?
- 29. ¿Cómo hago la codificación URL de los caracteres ASCII?
- 30. C++ ¿Cómo afecta la palabra clave mutable al rendimiento del contenedor?
Me salvó el día, gracias. –