GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuáles son las diferencias entre los archivos .txt de Linux y Windows (codificación Unicode)?

"Unicode" en Windows es UTF-16LE y cada carácter tiene 2 o 4 bytes. Linux usa UTF-8 y cada carácter tiene entre 1 y 4 bytes.

"El mínimo absoluto que todo desarrollador de software debe conocer absoluta y positivamente sobre Unicode y conjuntos de caracteres (¡sin excusas!)"


Saltos de línea

Windows usa CRLF (\r\n , 0D 0A ) finales de línea mientras que Unix solo usa LF (\n , 0A ).

Codificación de caracteres

Los sistemas similares a Unix más modernos (es decir, desde 2004 más o menos) hacen que UTF-8 sea la codificación de caracteres predeterminada.

Sin embargo, Windows carece de soporte nativo para UTF-8. Funciona internamente en UTF-16 y asume que char Las cadenas basadas en están en una página de códigos heredada. Afortunadamente, el Bloc de notas es capaz de leer archivos UTF-8; desafortunadamente, la codificación "ANSI" todavía el predeterminado.

Caracteres especiales problemáticos

U+001A SUSTITUTO

Windows (raramente) usa Ctrl +Z como carácter de fin de archivo. Por ejemplo, si type un archivo en el símbolo del sistema, se truncará en el primer 1A byte.

En Unix, Ctrl +Z no es nada especial.

U+FEFF CERO SIN ESPACIO SIN CORTE (Marca de orden de bytes)

En Windows, los archivos UTF-8 a menudo comienzan con una "marca de orden de bytes" EF BB BF para distinguirlos de los archivos ANSI.

En Linux, se desaconseja la BOM porque rompe cosas como líneas shebang en scripts de shell. Además, no tendría sentido tener una firma UTF-8 cuando UTF-8 es la codificación predeterminada de todos modos.


Una diferencia que he escuchado es el uso de \r\n (Windows) vs. \n para saltos de línea (Linux).

Sí. La mayoría de los editores de texto de UNIX manejarán esto automáticamente, los editores de programadores de Windows pueden manejar esto, los editores de texto generales (Bloc de notas base) no lo harán.

Windows parece necesitar también el EOF (Ctrl-Z) como FIN DE ARCHIVO en algunos contextos, mientras que probablemente nunca lo verá en UNIX.

Recuerde que MacOS X ahora es UNIX debajo, por lo que usa finales de línea UNIX. Aunque antes de OS X (MacOS 9 y versiones anteriores) tenía su propio final (\r)

EDITAR:en otro formato CR y LF:

  • \n es ASCII 0x0A, avance de línea (LF)
  • \r es ASCII 0x0D, retorno de carro (CR)

Linux
  1. ¿Cuál es la diferencia entre un contenedor de Linux y una imagen?

  2. ¿Cuáles son las principales diferencias entre Bsd y Gnu/linux Userland?

  3. ¿Cuáles son las diferencias entre el kernel enviado de Ubuntu y el kernel ascendente?

  4. ¿Cuáles son las llamadas al sistema operativo/sistema nativo de Windows y Linux realizadas desde malloc()?

  5. ¿Cuál es la diferencia entre 'localizar' y 'buscar' en Linux?

¿Cuál es la diferencia entre los núcleos de macOS y Linux?

¿Cuál es la diferencia entre Linux y Unix?

Instale Dropbox para compartir archivos entre Linux y Windows

Cómo compartir archivos de juegos de Steam entre Linux y Windows

¿Cuáles son las diferencias entre cPanel y WHM?

Compartir archivos entre Linux Mint y Windows 10