"Unicode" di Windows adalah UTF-16LE, dan setiap karakter berukuran 2 atau 4 byte. Linux menggunakan UTF-8, dan setiap karakter berukuran antara 1 dan 4 byte.
"Minimum Mutlak Setiap Pengembang Perangkat Lunak, Pasti Harus Tahu Tentang Unicode dan Kumpulan Karakter (Tanpa Alasan!)"
Garis putus
Windows menggunakan CRLF (\r\n
, 0D 0A
) akhir baris sementara Unix hanya menggunakan LF (\n
, 0A
).
Enkode Karakter
Sebagian besar sistem modern (yaitu, sejak 2004 atau lebih) mirip Unix menjadikan UTF-8 sebagai penyandian karakter default.
Windows, bagaimanapun, tidak memiliki dukungan asli untuk UTF-8. Ini bekerja secara internal di UTF-16, dan mengasumsikan bahwa char
- string berbasis ada di halaman kode lawas. Untungnya, Notepad mampu membaca file UTF-8; sayangnya, enkode "ANSI" masih defaultnya.
Karakter Khusus Bermasalah
Pengganti U+001A
Windows (jarang) menggunakan Ctrl +Z sebagai karakter akhir file. Misalnya, jika Anda type
file pada prompt perintah, itu akan dipotong pada 1A
pertama byte.
Di Unix, Ctrl +Z tidak ada yang istimewa.
U+FEFF ZERO WITH NO-BREAK SPACE (Byte-Order Mark)
Di Windows, file UTF-8 sering dimulai dengan "byte order mark" EF BB BF
untuk membedakannya dari file ANSI.
Di Linux, BOM tidak disarankan karena merusak hal-hal seperti baris shebang di skrip shell. Selain itu, tidak ada gunanya memiliki tanda tangan UTF-8 jika UTF-8 adalah penyandian default.
Satu perbedaan yang saya dengar adalah penggunaan \r\n (Windows) vs. \n untuk jeda baris (Linux).
Ya. Sebagian besar editor teks UNIX akan menangani ini secara otomatis, editor pemrogram Windows dapat menangani ini, editor teks umum (Notepad dasar) tidak akan melakukannya.
Windows tampaknya juga membutuhkan EOF (Ctrl-Z) sebagai END OF FILE dalam beberapa konteks, sedangkan Anda mungkin tidak akan pernah melihatnya di UNIX.
Ingat bahwa MacOS X sekarang adalah UNIX di bawahnya, sehingga menggunakan akhiran garis UNIX. Meskipun sebelum OS X (MacOS 9 dan di bawahnya) memiliki akhirannya sendiri (\r)
EDIT:dalam format lain CR dan LF:
- \n adalah ASCII 0x0A, Umpan Baris (LF)
- \r adalah ASCII 0x0D, Carriage return (CR)