Oracle Solaris でのアプリケーションの国際化とローカライズ

印刷ビューの終了

更新: 2014 年 7 月
 
 

コードセットの変換

コンピュータシステムでは、文字は一意のスカラー値として表されます。このスカラー値は、バイトまたはバイトシーケンスとして処理されます。コード化された文字セットは、文字セットに、文字とそれに対応する一意のスカラー値の間のマッピングを加えたものです。これらの一意のスカラー値はコードセットと呼ばれます。たとえば、646 (US-ASCII とも呼ばれる) は、ISO/IEC 646:1991 標準に準拠する基本ラテン文字のコードセットです。次の表は、コードセットのその他の例を示しています。

コードセット
文字
表現
US-ASCII
A
0x41
ISO 8859-2
Č
0xC8
EUC-KR
全角ラテン A
0xA3 0xC1

Unicode 標準では、もう 1 つのレイヤーが追加され、各文字がコードポイントにマッピングされます。コードポイントは 0 - 1,114,111 の範囲の数値です。この数値は、UTF-8UTF-16、または UTF-32 などの Unicode エンコード形式ごとに異なる方法で表されます。例:

コードセット
文字
コードポイント
エンコーディング
表現
Unicode
全角ラテンの大文字 A
65,313 または 0xFF21
UTF-8
0xEF 0xBC 0xA1
UTF-16LE
0x21 0xFF

注 -  コードセットはエンコーディングとも呼ばれます。コードセットエンコーディングは同じ意味で使用されますが、これらの用語間には違いがあります。

コード変換またはコードセット変換は、1 つのコードセットから別のコードセットに、バイトまたはバイトシーケンスの表現を変換することを意味します。変換に対する一般的なアプローチは、iconv() ファミリの関数を使用することです。コード変換の領域で使用される用語と iconv() 関数の一部を次に示します。

シングルバイトコードセット

文字を、0 - 255 または 0x00 - 0xFF の範囲の値セットにマッピングするコードセット。つまり、1 文字が 1 バイトで表されます。

マルチバイトコードセット

文字の一部またはすべてを複数バイトにマッピングするコードセット。

無効な文字

入力のコードセット内の無効な文字。

シフトシーケンス

マルチバイトコードセット内の特別なバイトシーケンスで、文字にはマッピングされず、デコーダの状態を変更する手段になります。

不完全な文字

入力コードセットで有効な文字を形成しないバイトのシーケンス。ただし、入力から追加のバイトが提供された場合、iconv() 関数などの変換関数への後続の呼び出しで有効な文字が形成されることがあります。これはマルチバイトストリームを変換する場合に一般的です。

同一でない文字

入力コードセットでは有効なのに、出力コードセットに同一の文字が存在しない文字。

同一でない変換

同一でない文字の変換。実装および変換オプションによっては、これらの文字は出力で省略するか、同一でない変換が発生したことを示す 1 つ以上の文字で置き換えることができます。Oracle Solaris の iconv() 関数では、デフォルトで、同一でない文字は疑問符 ('?') で置き換えられます。