GNU/Linux >> Linux Esercitazione >  >> Linux

Quali sono le differenze tra i file .txt Linux e Windows (codifica Unicode)

"Unicode" su Windows è UTF-16LE e ogni carattere è di 2 o 4 byte. Linux utilizza UTF-8 e ogni carattere è compreso tra 1 e 4 byte.

"Il minimo assoluto che ogni sviluppatore di software deve conoscere assolutamente e positivamente su Unicode e set di caratteri (niente scuse!)"


Interruzioni di riga

Windows utilizza CRLF (\r\n , 0D 0A ) mentre Unix usa solo LF (\n , 0A ).

Codifica caratteri

La maggior parte dei sistemi simili a Unix moderni (ovvero dal 2004 circa) fanno di UTF-8 la codifica dei caratteri predefinita.

Windows, tuttavia, non dispone del supporto nativo per UTF-8. Funziona internamente in UTF-16 e presuppone che char le stringhe basate su si trovano in una tabella codici legacy. Fortunatamente, Blocco note è in grado di leggere file UTF-8; sfortunatamente, la codifica "ANSI" è ancora l'impostazione predefinita.

Caratteri speciali problematici

U+001A SOSTITUTO

Windows (raramente) usa Ctrl +Z come carattere di fine file. Ad esempio, se type un file al prompt dei comandi, verrà troncato al primo 1A byte.

Su Unix, Ctrl +Z non è niente di speciale.

U+FEFF ZERO CON SPAZIO SENZA INTERRUZIONE (Byte-Order Mark)

Su Windows, i file UTF-8 spesso iniziano con un "byte order mark" EF BB BF per distinguerli dai file ANSI.

Su Linux, il BOM è sconsigliato perché interrompe cose come le righe shebang negli script di shell. Inoltre, sarebbe inutile avere una firma UTF-8 quando UTF-8 è comunque la codifica predefinita.


Una differenza che ho sentito è l'uso di \r\n (Windows) rispetto a \n per le interruzioni di riga (Linux).

Sì. La maggior parte degli editor di testo UNIX lo gestirà automaticamente, gli editor di programmatori Windows potrebbero gestirlo, gli editor di testo generici (Blocco note di base) no.

Windows sembra aver bisogno anche dell'EOF (Ctrl-Z) come END OF FILE in alcuni contesti, mentre probabilmente non lo vedrai mai su UNIX.

Ricorda che MacOS X ora è UNIX sotto, quindi utilizza terminazioni di riga UNIX. Anche se prima di OS X (MacOS 9 e precedenti) aveva il proprio finale (\r)

EDIT:in altro formato CR e LF:

  • \n è ASCII 0x0A, Line Feed (LF)
  • \r è ASCII 0x0D, ritorno a capo (CR)

Linux
  1. MySQL vs. MariaDB:quali sono le principali differenze tra loro

  2. Quali sono le chiamate al sistema operativo/sistema nativo di Windows e Linux effettuate da malloc()?

  3. Quali sono le differenze tra lsof e netstat su Linux?

  4. Quali sono le differenze tra le principali distribuzioni Linux? me ne accorgerò?

  5. Quali sono le differenze tra rdesktop e xfreerdp?

Qual ​​è la differenza tra i kernel macOS e Linux

Qual è la differenza tra Linux e Unix?

Installa Dropbox per condividere file tra Linux e Windows

Come condividere file di giochi Steam tra Linux e Windows

Quali sono le differenze tra cPanel e WHM?

Condivisione di file tra Linux Mint e Windows 10