Zastosowane kodowanie Unicode nie jest oparte na systemie operacyjnym.
Nawet Windows notepad.exe ma wymienione opcje - (wstawię w nawiasach, co oznacza przez to notatnik) ANSI (nie Unicode), Unicode (notatnik oznacza Unicode LE), Unicode Big Endian (BE), UTF-8
ANSI nie jest Unicode, zawiera bardzo ograniczoną liczbę znaków, więc odłóżmy to na bok.
Ale patrz nawet notatnik może zrobić LE, BE lub UTF-8
Poza notatnikiem, UTF-8 może być z BOM lub bez niego.
I używam Windows z Cygwin, chociaż porty Windows mogą równie dobrze zrobić \ r \ n, nawet jeśli określisz \ n Widziałem, jak robi to sed.
Nie ma jednej reguły dotyczącej tego, jakiego kodowania Unicode używa dany system operacyjny. Gdyby tak było, nie byłby to bardzo elastyczny system operacyjny.
Aby naprawdę zobaczyć różnice, poznaj Oprogramowanie, czego używa lub oferuje Kodowanie oprogramowania.
Pobierz Cygwin i xxd i / lub edytor szesnastkowy i sprawdź, co naprawdę znajduje się w pliku. Użyj polecenia „plik”, aby pomóc zidentyfikować plik. Wtedy faktycznie widzisz, czym jest UTF 16bit LE. Co to jest UTF 16bit BE. Co to jest UTF-8 (a UTF-8 może być z BOM lub bez).
Czasami możesz powiedzieć Notatnikowi, aby zapisał jako Unicode (przez co Notatnik oznacza 16-bitowy mały endian) i tak się nie stanie. Ale wybierz czcionkę Unicode, taką jak Arial Unicode, i skopiuj niektóre znaki Unicode z Charmap, a to zrobi .. I dobrym sposobem, aby zobaczyć, co robi Notatnik lub cokolwiek innego oprogramowania, jest spojrzenie na hex pliku
C:\asdf>notepad.exe a.a
C:\asdf>file a.a
a.a; Little-endian UTF-16 Unicode text, with no line terminators
C:\asdf>type a.a
aaa慡ൡ <-- though displayed aaa followed by some boxes in my cmd window
C:\asdf>
C:\asdf>xxd a.a
0000000: fffe 6100 6100 6100 6161 610d ..a.a.a.aaa.
C:\asdf>
^^ The portion of the byte that stores the 61 is the lower value portion which with LE is stored first.
Polecenie dd (polecenie * nix uruchamiane z cygwina w systemie Windows) może je przełączyć
C:\asdf>xxd -p a.a
fffe6100610061006161610d
C:\asdf>file a.a
a.a; Little-endian UTF-16 Unicode text, with no line terminators
C:\asdf>dd if=a.a conv=swab of=a.a2
0+1 records in
0+1 records out
12 bytes (12 B) copied, 0 seconds, Infinity B/s
C:\asdf>type a.a2
a a a aaa
C:\asdf>xxd -p a.a2
feff00610061006161610d61
C:\asdf>file a.a2
a.a2; Big-endian UTF-16 Unicode text, with no line terminators
C:\asdf>
A sam notatnik może zapisać jako UTF-16 Big Endian lub UTF-16 Little Endian lub UTF-8
Jeśli jesteś osobą techniczną, a nawet zwykłym użytkownikiem notatnika, nie jesteś związany żadnym kodowaniem z powodu swojego systemu operacyjnego!
Przypuszczam, że UTF-8 ma większy sens niż UTF-16, UTF-16 użyłby 16 bitów nawet dla znaków, które powinny potrzebować tylko 8 bitów. Pamiętaj jednak, że charmap pokazuje kod UTF-16.
Sublime (edytor tekstu systemu Windows) domyślnie zapisuje Unicode jako UTF-8.
Używam Windowsa, a czasem Unicode, i używam głównie UTF-8.
A ponieważ Windows jest technicznie elastyczny, Linux jest przynajmniej tak samo elastyczny technicznie!