Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 14853|Respuesta: 0

[Fuente] Problemas con el prefijo MA encontrados al leer archivos Unicode (UTF-8, etc.) en Java

[Copiar enlace]
Publicado en 14/1/2019 16:26:17 | | |
El problema de los primeros caracteres en la lista de materiales que se encuentran al leer archivos Unicode (UTF-8, etc.) en Java y cómo gestionarlos

Los archivos de texto creados con un editor de texto en Windows tendrán un ID de lista de materiales añadido al encabezado del archivo (el primer carácter) si decides guardarlos en un formato Unicode como UTF-8.

Esta identificación no se elimina cuando el archivo se lee en Java, y String.trim() no puede eliminarse. Si usas readLine() para leer la primera línea y almacenarla en la cadena, la longitud de la cadena será 1 mayor que la que ves, y el primer carácter es esta lista de materiales (BOM).

Esto puede causar algunos problemas, como al leer un archivo ini, si quieres saber si la primera línea empieza por "[", no puedes juzgar correctamente.

Afortunadamente, cuando Java lee archivos Unicode, cambia uniformemente la lista de materiales a "\uFEFF", así que puedes resolverlo manualmente (tras el juicio, usa substring() o replace() para eliminar esta lista de materiales (BOM):

Sin embargo,Este enfoque no es perfectoSi el archivo jar generado se ejecuta bajo Windows, sigue habiendo un problema. La solución definitiva es usar el BOMInputStream proporcionado por apache commons io:

¿Qué es la Lista de Bebida?


BOM = Marca de orden de bytes
La lista de materiales es el método recomendado para marcar el orden de los bytes en la especificación Unicode. Por ejemplo, para UTF-16, si el receptor recibe una lista de materiales de FEFF, indica que el flujo de bytes es Big-Endian; Si se recibe FFFE, indica que el flujo de bytes es Little-Endian.
UTF-8 no requiere una lista de materiales para indicar el orden de bytes, pero puede usarse para indicar "Estoy codificado en UTF-8". La codificación UTF-8 de la lista de materiales es EF BB BF (como se ve al abrir texto con UltraEdit y cambiar a hexadecimal). Así que si el receptor recibe un flujo de bytes que empieza con EF BB BF, saben que es codificación UTF-8.





Anterior:Soluciones de errores comunes de Jackson
Próximo:¡Software de codificación de barras, camarero!
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com