Những mã hóa ký tự được hỗ trợ bởi posix?


11

POSIX xác định hành vi của các công cụ như grep, awk, sed, vv mà làm việc với các file văn bản. Vì nó là một tệp văn bản, tôi nghĩ có vấn đề về mã hóa ký tự.

Câu hỏi:

  • Mã hóa ký tự được POSIX hỗ trợ là gì? (hoặc, tệp văn bản của hệ thống mã hóa nào có thể được xử lý bởi các hệ thống tuân thủ POSIX?)

Câu trả lời:


19

Không có mã hóa ký tự cụ thể được ủy quyền bởi POSIX. Ký tự duy nhất ở một vị trí cố định là null, phải là 00.

Những gì POSIX yêu cầu là tất cả các ký tự trong Bộ ký tự di động của nó tồn tại. Bộ ký tự di động chứa các ký tự ASCII có thể in, dấu cách, BEL, backspace, tab, trả về vận chuyển, dòng mới, tab dọc, nguồn cấp mẫu và null. Những nơi được mã hóa không được chỉ định, ngoại trừ:

  • Chúng đều là một byte đơn (8 bit).
  • Null được biểu diễn với tất cả các bit bằng không.
  • Các chữ số 0-9 xuất hiện liền kề theo thứ tự đó.

Nó không áp đặt các hạn chế khác đối với việc thể hiện các ký tự, do đó, một hệ thống tuân thủ có thể tự do hỗ trợ mã hóa với bất kỳ đại diện nào của các ký tự đó và bất kỳ ký tự nào khác.

Các địa phương khác nhau trên cùng một hệ thống có thể có các cách biểu diễn khác nhau của các ký tự đó, ngoại trừ ./, và

nếu một ứng dụng sử dụng bất kỳ cặp vị trí nào có mã hóa ký tự khác nhau hoặc truy cập dữ liệu từ một ứng dụng bằng một ngôn ngữ có mã hóa khác với các vị trí được sử dụng bởi ứng dụng, kết quả sẽ không được chỉ định.

Các tệp duy nhất mà tất cả các hệ thống tuân thủ POSIX được yêu cầu xử lý theo cùng một cách là các tệp chứa toàn bộ byte rỗng. Các tệp được coi là văn bản có dòng bị chấm dứt bởi đại diện của mã hóa ký tự dòng mới của PCS .


5

Tiêu chuẩn POSIX giới thiệu một miền địa phương POSIX, có cùng thứ tự với bộ ký tự ASCII cho các ký tự trong ASCII (Định nghĩa cơ sở POSIX §7.3.2).

Ngoài ra, trên các hệ thống có hằng số ký hiệu POSIX2_LOCALEDEFđược xác định (sẽ được xác định cho các hệ thống tuân thủ XSI và có thể được kiểm tra thông qua getconf POSIX2_LOCALEDEF), hệ thống hỗ trợ tạo các địa điểm mới, sử dụng localedeftiện ích và định nghĩa miền địa phương như được chỉ định trong POSIX Base Định nghĩa §7.3.

Các định nghĩa miền địa phương POSIX không hỗ trợ chỉ định các ký tự theo giá trị Unicode của chúng, có các tiêu chuẩn mới hơn, chẳng hạn như ISO / IEC TR 14652 (có sẵn tại nhà ISO / IEC JTC1 / SC22 / WG20 ) và ISO TR 30112 (dự thảo có sẵn tại ISO / IEC JTC1 / SC35 / WG5 home ) làm lỗi thời ISO / IEC TR 14652.

Các tiêu chuẩn liên quan khác là ISO 14651 (có sẵn tại trang web ISO ITTF ) và Thuật toán đối chiếu Unicode (UCA, Unicode UTS # 10) .

Các Unicode :: cuộc đấu đá mô-đun Perl tại CPAN bao gồm Unicode viết lại một số tiện ích Unix. kịch bản sed và awk và một lớp lót có thể (tương đối dễ dàng) được viết lại trong Perl để hỗ trợ Unicode.

Đối với glibc, các mục bugzilla cho thành phần localedata có thể cung cấp chế độ xem trạng thái của các địa phương khác nhau.


3
Lưu ý rằng thứ tự ngôn ngữ POSIX xác định thứ tự đối chiếu khớp với ASCII, thay vì đại diện mã hóa thực tế.
Michael Homer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.