コンピュータシステムでは、文字は一意のスカラー値として表されます。このスカラー値は、バイトまたはバイトシーケンスとして処理されます。コード化された文字セットは、文字セットに、文字とそれに対応する一意のスカラー値の間のマッピングを加えたものです。これらの一意のスカラー値はコードセットと呼ばれます。たとえば、646 (US-ASCII とも呼ばれる) は、ISO/IEC 646:1991 標準に準拠する基本ラテン文字のコードセットです。次の表は、コードセットのその他の例を示しています。
|
Unicode 標準では、もう 1 つのレイヤーが追加され、各文字がコードポイントにマッピングされます。コードポイントは 0 - 1,114,111 の範囲の数値です。この数値は、UTF-8、UTF-16、または UTF-32 などの Unicode エンコード形式ごとに異なる方法で表されます。例:
|
コード変換またはコードセット変換は、1 つのコードセットから別のコードセットに、バイトまたはバイトシーケンスの表現を変換することを意味します。変換に対する一般的なアプローチは、iconv() ファミリの関数を使用することです。コード変換の領域で使用される用語と iconv() 関数の一部を次に示します。
文字を、0 - 255 または 0x00 - 0xFF の範囲の値セットにマッピングするコードセット。つまり、1 文字が 1 バイトで表されます。
文字の一部またはすべてを複数バイトにマッピングするコードセット。
入力のコードセット内の無効な文字。
マルチバイトコードセット内の特別なバイトシーケンスで、文字にはマッピングされず、デコーダの状態を変更する手段になります。
入力コードセットで有効な文字を形成しないバイトのシーケンス。ただし、入力から追加のバイトが提供された場合、iconv() 関数などの変換関数への後続の呼び出しで有効な文字が形成されることがあります。これはマルチバイトストリームを変換する場合に一般的です。
入力コードセットでは有効なのに、出力コードセットに同一の文字が存在しない文字。
同一でない文字の変換。実装および変換オプションによっては、これらの文字は出力で省略するか、同一でない変換が発生したことを示す 1 つ以上の文字で置き換えることができます。Oracle Solaris の iconv() 関数では、デフォルトで、同一でない文字は疑問符 ('?') で置き換えられます。