Pengodean karakter mana yang didukung oleh posix?

11

POSIX mendefinisikan perilaku alat seperti grep, awk, sed, dll yang bekerja melawan file teks. Karena ini adalah file teks, saya pikir ada masalah pengkodean karakter.

Pertanyaan:

  • Apa pengkodean karakter yang didukung oleh POSIX? (atau, file teks dari pengkodean apa yang dapat ditangani oleh sistem yang mendukung POSIX?)
Yuki Inoue
sumber

Jawaban:

19

Tidak ada pengkodean karakter khusus yang diamanatkan oleh POSIX. Satu-satunya karakter dalam posisi tetap adalah nol, yang harus 00.

Yang diperlukan POSIX adalah semua karakter dari Set Karakter Portable -nya ada. Set Karakter Portable berisi karakter ASCII yang dapat dicetak, spasi, BEL, backspace, tab, carriage return, baris baru, tab vertikal, umpan formulir, dan null. Di mana atau bagaimana mereka dikodekan tidak ditentukan, kecuali bahwa:

  • Mereka semua adalah satu byte (8 bit).
  • Null diwakili dengan semua bit nol.
  • Angka 0-9 muncul berdampingan dalam urutan itu.

Itu tidak memberlakukan batasan lain pada representasi karakter, sehingga sistem yang menyesuaikan bebas untuk mendukung pengkodean dengan representasi karakter tersebut, dan karakter lainnya sebagai tambahan.

Lokal yang berbeda pada sistem yang sama dapat memiliki representasi karakter yang berbeda, dengan pengecualian .dan /, dan

jika suatu aplikasi menggunakan pasangan lokal yang berbeda penyandian karakternya, atau mengakses data dari aplikasi yang menggunakan lokal yang memiliki penyandian berbeda dari lokal yang digunakan oleh aplikasi, hasilnya tidak ditentukan.

Satu-satunya file yang harus diperlakukan oleh semua sistem yang mendukung POSIX dengan cara yang sama adalah file yang seluruhnya terdiri dari null byte. File-file yang diperlakukan sebagai teks dihentikan garis - garisnya oleh representasi pengkodean dari karakter baris baru PCS .

Michael Homer
sumber
5

Standar POSIX memperkenalkan lokal POSIX, yang memiliki urutan yang sama dengan karakter ASCII yang ditetapkan untuk karakter dalam ASCII (Definisi Basis POSIX §7.3.2).

Selain itu, pada sistem di mana konstanta simbolik POSIX2_LOCALEDEFdidefinisikan (yang harus didefinisikan untuk sistem konforman XSI, dan dapat diuji melalui getconf POSIX2_LOCALEDEF), sistem mendukung penciptaan lokal baru, menggunakan localedefutilitas, dan definisi lokal seperti yang ditentukan dalam POSIX Base Definisi §7.3.

Definisi lokal POSIX tidak mendukung menentukan karakter berdasarkan nilai Unicode mereka, ada standar yang lebih baru, seperti ISO / IEC TR 14652 (tersedia di rumah ISO / IEC JTC1 / SC22 / WG20 ), dan ISO TR 30112 (draft tersedia di ISO / IEC JTC1 / SC35 / WG5 rumah ) yang usang ISO / IEC TR 14652.

Standar terkait lainnya adalah ISO 14651 (tersedia di situs ISO ITTF ) dan Algoritma Collation Unicode (UCA, Unicode UTS # 10) .

The Unicode :: pergumulan Perl modul di CPAN termasuk Unicode penulisan ulang dari beberapa utilitas Unix. skrip sed dan awk dan one-liner dapat (relatif mudah) ditulis ulang di Perl untuk dukungan Unicode.

Untuk glibc, entri bugzilla untuk komponen localedata dapat memberikan tampilan status dari berbagai lokal.

ninjalj
sumber
3
Perhatikan bahwa POSIX lokal pemesanan mendefinisikan pemeriksaan rangka pencocokan ASCII, bukan representasi encoding yang sebenarnya.
Michael Homer