То, что используется кодировка Unicode, не основано на ОС.
Даже в Windows notepad.exe перечислены параметры - (я заключу в скобки, что означает под этим блокнот) ANSI (не Unicode), Unicode (блокнот означает Unicode LE), Unicode Big Endian (BE), UTF-8
ANSI не является юникодом, он включает в себя очень ограниченное количество символов, поэтому давайте отложим это в сторону.
Но посмотрите, даже блокнот может сделать LE, или BE, или UTF-8
И блокнот в стороне, UTF-8 может быть с или без спецификации.
И я использую Windows с Cygwin, хотя порты Windows вполне могут делать \r \n, даже если вы укажете \n Видели, что sed это делает.
Не существует единого правила использования кодировки Unicode конкретной ОС. Это была бы не очень гибкая ОС, если бы была.
Чтобы действительно увидеть различия, знайте, что такое Программное обеспечение, что использует или предлагает Кодировка.
Получите Cygwin и xxd, и / или шестнадцатеричный редактор и посмотрите, что действительно находится внутри файла. Используйте команду file, чтобы помочь идентифицировать файл. Тогда вы на самом деле видите, что такое UTF 16bit LE. Что такое UTF 16bit BE. Что такое UTF-8 (а UTF-8 может быть с или без спецификации).
Иногда вы можете указать блокноту сохранить как unicode(под этим блокнотом подразумевается 16-битный юникод с прямым порядком байтов), но это не так. Но выберите шрифт Unicode, такой как Arial Unicode, и скопируйте некоторые символы Unicode из charmap, и это будет .. И хороший способ увидеть, что делает блокнот или какое-либо программное обеспечение, это посмотреть на гекс файла
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.
Команда dd (команда * nix, которую я запускаю из cygwin в Windows) может переключить ее
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>
А сам блокнот можно сохранить как UTF-16 Big Endian или UTF-16 Little Endian или UTF-8
Если вы технический специалист или даже просто пользователь блокнота, вы не обязаны использовать одну кодировку из-за своей ОС!
Я полагаю, что UTF-8 имеет больше смысла, чем UTF-16, UTF-16 будет использовать 16 битов даже для символов, которым нужно только 8 бит. Также имейте в виду, что charmap показывает код UTF-16.
Sublime(текстовый редактор Windows) по умолчанию сохраняет Unicode как UTF-8.
Я использую Windows, а иногда и Unicode, и я в основном использую UTF-8.
И поскольку Windows технически гибкая, Linux, по крайней мере, технически гибок!