GNU/Linux >> Znalost Linux >  >> Linux

Jaké jsou rozdíly mezi soubory .txt pro Linux a Windows (kódování Unicode)

"Unicode" ve Windows je UTF-16LE a každý znak má 2 nebo 4 bajty. Linux používá UTF-8 a každý znak má 1 až 4 bajty.

"Absolutní minimum, které musí každý vývojář softwaru absolutně, pozitivně znát o Unicode a znakových sadách (bez výmluv!)"


Konce řádků

Windows používá CRLF (\r\n , 0D 0A ) konce řádků, zatímco Unix používá pouze LF (\n). , 0A ).

Kódování znaků

Většina moderních (tj. asi od roku 2004) systémů podobných Unixu dělá z UTF-8 výchozí kódování znaků.

Windows však postrádají nativní podporu pro UTF-8. Interně funguje v UTF-16 a předpokládá, že char Řetězce -based jsou ve starší kódové stránce. Naštěstí je Poznámkový blok schopen číst soubory UTF-8; kódování "ANSI" je bohužel stále výchozí.

Problematické speciální znaky

Náhrada U+001A

Windows (zřídka) používá Ctrl +Z jako znak konce souboru. Pokud například type soubor na příkazovém řádku, bude zkrácen na prvních 1A byte.

V systému Unix Ctrl +Z není nic zvláštního.

U+FEFF NULA S MEZERNÍKEM BEZ PŘERUŠENÍ (značka pořadí bajtů)

V systému Windows soubory UTF-8 často začínají "značkou pořadí bajtů" EF BB BF abyste je odlišili od souborů ANSI.

Na Linuxu se kusovník nedoporučuje, protože porušuje věci, jako jsou řádky Shebang ve skriptech shellu. Navíc by bylo zbytečné mít podpis UTF-8, když je stejně výchozí kódování UTF-8.


Jeden rozdíl, který jsem slyšel, je použití \r\n (Windows) vs. \n pro zalomení řádků (Linux).

Ano. Většina textových editorů UNIX to zvládne automaticky, editory programátorů Windows to zvládnou, obecné textové editory (základní Poznámkový blok) nikoli.

Zdá se, že Windows v některých kontextech také potřebují EOF (Ctrl-Z) jako END OF FILE, zatímco na UNIXu jej pravděpodobně nikdy neuvidíte.

Pamatujte, že MacOS X je nyní pod názvem UNIX, takže používá zakončení řádků UNIX. Ačkoli před OS X (MacOS 9 a nižší) měl svůj vlastní konec (\r)

EDIT:v jiném formátu CR a LF:

  • \n je ASCII 0x0A, Line Feed (LF)
  • \r je ASCII 0x0D, návrat vozíku (CR)

Linux
  1. Linux – sdílení souborů mezi hostitelem Linuxu a hostem Windows?

  2. Jaké jsou hlavní rozdíly mezi Bsd a Gnu/linux Userland?

  3. Linux – Jaké jsou hlavní rozdíly mezi operačními systémy založenými na Bsd a Linux?

  1. Jaké jsou rozdíly mezi jádrem dodávaným Ubuntu a upstream jádrem?

  2. Jaké jsou rozdíly mezi lsof a netstat na linuxu?

  3. Jaké jsou rozdíly mezi hlavními distribucemi Linuxu? Všimnu si?

  1. MySQL vs. MariaDB:Jaké jsou hlavní rozdíly mezi nimi

  2. Jaký je rozdíl mezi linuxovým kontejnerem a obrázkem?

  3. Jaká jsou nativní volání OS/systému Windows a Linuxu prováděná z malloc()?