Які кодування символів підтримуються posix?


11

POSIX визначає поведінку інструментів , таких як grep, awk, sed, і т.д. , які працюють проти текстових файлів. Оскільки це текстовий файл, я думаю, що існує проблема (кодування) символів.

Питання:

  • Які кодування символів підтримуються POSIX? (або текстові файли того, яке кодування може оброблятися системами, що підтримують POSIX?)

Відповіді:


19

Не існує конкретного кодування символів, дозволеного POSIX. Єдиний символ у фіксованому положенні - це нуль, який повинен бути 00.

Що вимагає POSIX, це те, що всі символи з його Портативного набору символів існують. Портативний набір символів містить символи для друку ASCII, пробіл, BEL, зворотну область, вкладку, повернення каретки, нову лінію, вертикальну вкладку, канал форми та нуль. Де або як вони закодовані, не вказано, за винятком того, що:

  • Всі вони є одним байтом (8 біт).
  • Нуль представлений усіма бітами нульовими.
  • Цифри 0-9 постійно з’являються в тому порядку.

Він не накладає ніяких інших обмежень на представлення символів, тому відповідна система може безкоштовно підтримувати кодування з будь-яким представленням цих символів та будь-якими іншими символами.

Різні локалі в одній системі можуть мати різні зображення цих символів, за винятком .і /, і

якщо програма використовує будь-яку пару локалів, де кодування символів відрізняються, або отримує доступ до даних програми, використовуючи локаль, який має різні кодування від локалів, які використовує додаток, результати не визначені.

Єдині файли, які всі системи, сумісні з POSIX, повинні обробляти однаково, - це файли, що складаються повністю з нульових байтів. Файли, оброблені як текст, закінчують свої рядки за допомогою представлення кодуванням символу нового рядка PCS .


5

Стандарт POSIX вводить локаль POSIX, який має той самий порядок, що і набір символів ASCII для символів ASCII (базові визначення POSIX §7.3.2).

Крім того, в системах, де визначена символічна константа POSIX2_LOCALEDEF(яка повинна бути визначена для XSI-сумісних систем і може бути протестована через getconf POSIX2_LOCALEDEF), система підтримує створення нових локалів, використовуючи визначення localedefутиліти та локалі, як зазначено в POSIX Base Визначення §7.3.

Визначення локальної точки POSIX не підтримують вказівку символів за їх значенням Unicode. Існують новіші стандарти, такі як ISO / IEC TR 14652 (доступний в домашній частині ISO / IEC JTC1 / SC22 / WG20 ) та ISO TR 30112 (проект доступний на сайті ISO / IEC JTC1 / SC35 / WG5 home ), який застаріває ISO / IEC TR 14652.

Інші відповідні стандарти - це ISO 14651 (доступний на сайті ISO ITTF ) та алгоритм зібрання Unicode (UCA, Unicode UTS # 10) .

Модуль Unicode :: Tussle Perl в CPAN включає Unicode переписує кілька утилітів Unix. Сценарії sed і awk та однолінійки можна (відносно легко) переписати в Perl для підтримки Unicode.

Для glibc записи bugzilla для локальних даних компонентів можуть забезпечувати перегляд стану різних локалів .


3
Зауважте, що локальне впорядкування POSIX визначає порядок порівняння , що відповідає ASCII, а не реальне представлення кодування.
Майкл Гомер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.