- Me preguntaba si algunos archivos de texto almacenan su método de codificación junto con su contenido de texto para su posterior decodificación.
- ¿O es el trabajo del espectador de texto adivinar el método de codificación para un archivo de texto dado, y la suposición no siempre es correcta? En caso afirmativo, ¿cómo adivina eso un visor de texto?
19
Respuestas:
La respuesta de Mark Szymanski es correcta: no hay información de codificación explícita en un archivo de texto sin formato, esa es la definición de "archivo de texto sin formato", el "texto sin formato" se refiere al hecho de que no hay metadatos en el archivo.
Sin embargo, algunas aplicaciones colocarán una marca de orden de bytes (BOM) en archivos de texto codificados como UTF-16 o UTF-32 / UCS-4. La lista de materiales no está destinada a indicar la codificación (indica el orden de los bytes, como su nombre lo indica), pero muchas aplicaciones utilizarán la presencia de la lista de materiales para reconocer UTF-16 / UTF-32, por lo que sirve como un indicador de codificación.
Sí, el visor de texto solo puede adivinar. Suele utilizar algunas heurísticas:
vim
funciona de manera predeterminada: primero intentará usar UTF-8 al leer un archivo; Si eso falla, vuelve a ISO-8859-1.En la mayoría de los casos, se le debe decir explícitamente a un programa cuál es la codificación de un archivo de texto; de lo contrario, no podrá leerlo correctamente.
fuente
file -bi
funciona si no se utiliza BOM?file
tiene varias heurísticas para determinar el tipo de archivo y la codificación. Principalmente, busca ciertas cadenas o secuencias de bytes en el archivo. Si desea información más específica, probablemente tendrá que leer la fuente. O simplemente haga una pregunta por separado :-).file
no puede detectar de manera confiable la mayoría de las codificaciones de texto (porque eso es muy difícil). La página de manual tiene información sobre la detección defile
juegos de caracteres: en su mayoría solo reconoce ASCII, UTF-8/16, EBCDIC e ISO-8859-x. Por ejemplo, un archivo codificado en KOI8-R se informa como "ISO-8859-1".Los archivos de texto sin formato no almacenan ninguna información sobre su codificación. Un visor lo determina en función de la codificación de caracteres que haya establecido para él. No puede determinarlo por sí mismo, ya que es lo mismo para la computadora.
fuente
less
ygrep
en Unix / Linux haga esto).