Яке кодування Unicode використовується не на основі ОС.
Навіть у Windows notepad.exe є перелічені параметри (я вкладу в дужки, що означає блокнот під цим) ANSI (не unicode), Unicode (блокнот означає Unicode LE), Unicode Big Endian (BE), UTF-8
ANSI не є unicode, він включає в себе дуже обмежену кількість символів, тому давайте відкладемо це.
Але дивіться, що навіть блокнот може робити LE, або BE, або UTF-8
А блокнот убік, UTF-8 може бути з BOM або без нього.
І я використовую Windows із Cygwin, хоча порти Windows цілком можуть робити \ r \ n навіть коли ви вказуєте \ n Бачили sed, що робить це.
Не існує жодного правила того, для чого використовується Unicode, що кодує конкретну ОС. Це не була б дуже гнучка ОС, якби вона була.
Щоб дійсно побачити відмінності, знайте Програмне забезпечення, що кодує частина програмного забезпечення, яке використовується або пропонує.
Отримайте Cygwin та xxd та / або шестнадцятковий редактор і подивіться, що насправді знаходиться у файлі. Використовуйте команду "файл", щоб допомогти визначити файл. Тоді ви фактично бачите, що таке UTF 16bit LE. Що таке UTF 16bit BE. Що таке UTF-8 (а UTF-8 може бути з BOM або без нього).
Іноді ви можете сказати блокноту зберегти як unicode (під яким блокнот означає unicode 16 біт-маленький ендіан), і він не буде. Але виберіть шрифт unicode, як-от arial unicode, і скопіюйте у charmap кілька символів unicode, і це буде. І хороший спосіб переконатися, що блокнот чи будь-яке програмне забезпечення роблять, - переглянувши шістнадцятковий файл
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.
Піднесене (редактор тексту Windows) зберігає unicode як UTF-8 за замовчуванням.
Я використовую Windows, а іноді і unicode, і я в основному використовую UTF-8.
А оскільки Windows є технічно гнучким, Linux є принаймні настільки ж технічно гнучким!