Những gì mã hóa Unicode được sử dụng không dựa trên hệ điều hành.
Ngay cả Windows notepad.exe cũng có các tùy chọn được liệt kê- (tôi sẽ đặt trong ngoặc đơn nghĩa là notepad nghĩa là gì) ANSI (không phải unicode), Unicode (notepad có nghĩa là Unicode LE), Unicode Big Endian (BE), UTF-8
ANSI không unicode nó liên quan đến số lượng ký tự rất hạn chế, vì vậy hãy đặt nó sang một bên.
Nhưng xem ngay cả notepad cũng có thể làm LE, hoặc BE hoặc UTF-8
Và bỏ qua một bên, UTF-8 có thể có hoặc không có BOM.
Và tôi sử dụng Windows với Cygwin mặc dù các cổng Windows có thể làm tốt \ r \ n ngay cả khi bạn chỉ định \ n Đã thấy sed làm điều đó.
Không có một quy tắc nào về việc mã hóa Unicode mà một hệ điều hành cụ thể sử dụng. Nó sẽ không phải là một hệ điều hành rất linh hoạt nếu có.
Để thực sự thấy sự khác biệt, hãy biết Phần mềm, những gì Mã hóa một phần mềm sử dụng hoặc cung cấp.
Nhận Cygwin và xxd, và / hoặc trình soạn thảo hex và xem xét những gì thực sự bên trong tệp. Sử dụng lệnh 'tập tin' để giúp xác định một tập tin. Sau đó, bạn thực sự thấy UTF 16bit LE là gì. UTF 16bit BE là gì. UTF-8 là gì (và UTF-8 có thể có hoặc không có BOM).
Đôi khi bạn có thể yêu cầu notepad lưu dưới dạng unicode (theo đó notepad có nghĩa là unicode 16 bit endian), và nó sẽ không. Nhưng chọn một phông chữ unicode như arial unicode, và sao chép một số ký tự unicode từ charmap và nó sẽ .. Và một cách tốt để xem notepad hoặc bất kỳ phần mềm nào đang làm, là bằng cách xem hex của tệp
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.
Lệnh dd (lệnh * nix tôi chạy từ cygwin trong windows) có thể chuyển đổi nó
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>
Và bản thân notepad có thể lưu dưới dạng UTF-16 Big Endian hoặc UTF-16 Little Endian hoặc UTF-8
Nếu bạn là người kỹ thuật hoặc thậm chí chỉ là người dùng notepad, bạn không bị ràng buộc với một mã hóa vì hệ điều hành của bạn!
Tôi cho rằng UTF-8 có ý nghĩa hơn UTF-16, UTF-16 sẽ sử dụng 16 bit ngay cả đối với các ký tự chỉ cần 8 bit. Ngoài ra, hãy nhớ rằng charmap hiển thị mã UTF-16.
Sublime (Trình soạn thảo văn bản windows) lưu unicode dưới dạng UTF-8 theo mặc định.
Tôi sử dụng Windows và đôi khi là unicode và tôi đang sử dụng UTF-8.
Và vì Windows linh hoạt về mặt kỹ thuật, linux ít nhất cũng linh hoạt về mặt kỹ thuật!