posixはどの文字エンコーディングをサポートしていますか?


11

POSIXは、次のようなツールの動作を定義しgrepawksed、などのテキストファイルに対してどの作品。テキストファイルなので、文字エンコードの問題があると思います。

質問:

  • POSIXでサポートされている文字エンコーディングは何ですか?(または、POSIXコンピアントシステムで処理できるエンコーディングのテキストファイル?)

回答:


19

POSIXで義務付けられている特定の文字エンコードはありません。固定位置の唯一の文字はnullで、00でなければなりません。

POSIXで必要なことは、ポータブルキャラクタセットのすべての文字が存在することです。ポータブル文字セットには、印刷可能なASCII文字、スペース、BEL、バックスペース、タブ、キャリッジリターン、改行、垂直タブ、フォームフィード、およびnullが含まれています。それらがどこでどのようにエンコードされるかは、以下を除いて指定されていません。

  • それらはすべて1バイト(8ビット)です。
  • ヌルはすべてのビットがゼロで表されます。
  • 0から9の数字は、この順序で連続して表示されます。

それは文字の表現に他の制限を課さないので、適合システムはそれらの文字の表現と他の文字に加えてエンコーディングを自由にサポートできます。

同じシステム上の異なるロケールはを除いて、それらの文字の異なる表現を持つことができる./し、

アプリケーションが文字エンコーディングが異なるロケールのペアを使用する場合、またはアプリケーションで使用されるロケールとは異なるエンコーディングのロケールを使用するアプリケーションのデータにアクセスする場合、結果は不定です。

すべてのPOSIX準拠システムが同じ方法で処理する必要がある唯一のファイルは、完全にnullバイトで構成されるファイルです。テキストとして扱われるファイルの行は、PCSの改行文字のエンコーディングによる表現で終了します


5

POSIX標準は、ASCIIの文字のASCII文字セットと同じ順序を持つPOSIXロケールを導入しています(POSIX基本定義§7.3.2)。

さらに、シンボリック定数POSIX2_LOCALEDEFが定義されているシステム(XSI準拠のシステム用に定義され、を介してテストできるgetconf POSIX2_LOCALEDEF)では、システムは、localedefユーティリティを使用した新しいロケールの作成、およびPOSIXベースで指定されているロケール定義をサポートします。定義§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)です。

CPAN のUnicode :: Tussle Perlモジュールには、いくつかのUnixユーティリティのUnicodeリライトが含まれています。Unicodeをサポートするために、sedおよびawkスクリプトとワンライナーを(比較的簡単に)Perlで書き直すことができます。

glibcの場合、コンポーネントlocaledataのbugzillaエントリは、さまざまなロケールのステータスのビューを提供できます。


3
POSIXロケールの順序は、実際のエンコーディング表現ではなく、ASCIIに一致する照合順序を定義することに注意してください。
Michael Homer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.