"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)