文字符号化

文字符号化 (文字コード)

[7] 文字符号化 (character encoding) は、 文字符号化する一連の規則の集合です。 「文字コード」と同じように曖昧に使われていますが、 「文字コード」とは違って単一の文字符号化を指すことはあまりなく、 符号化の方式全体を指しているようです。

仕様書

意味

[16] 符号化 (encoding) は、 スカラー値からバイト列へ (やその逆方向) の写像を定義するものです >>15

特性

[8] 文字符号化は、次のような特性を持ちます。

名前
Encoding Standard において符号化を識別する文字列です。 符号化は、名前を1つ持ちます >>15
ラベル
Encoding Standard において符号化に紐付けられた文字列群です。 符号化は、ラベルを1つ以上持ちます >>15
符号化器クラス
復号器クラス

[9] 文字符号化には次のような分類があります。

[10] 文字符号化は40種類あります。

単一バイト符号化

[18] Encoding Standard の規定する符号化の多数は、 単一バイト符号化 (single-byte encoding) です。単一バイト符号化においては、 ASCIIバイトASCII文字に対応関係があり、 非ASCIIバイト非ASCII文字が割り当てられています。

[22] 非ASCIIバイト非ASCII文字の対応関係は、 Encoding Standard で変換表が定義されています。

[19] 非ASCIIバイトのいくつかにはどのUnicode符号位置も割り当てられていない場合があります。 そのようなバイトが現れたら、複合器誤りモードに従い U+FFFD と解釈するか、誤りを返します。

[20] 当然ながら、 Unicode符号位置の大多数は単一バイト符号化で表現できません。 そのような符号位置が現れたら、符号位置誤りモードに従い文字参照を出力するか、 誤りを返します。文字参照はすべてASCII文字で表せます。

[23] ISO-8859-8-IISO-8859-8 は同じものですが、 レンダリングで違って処理されることになっています。 Encoding Standard では ISO-8859-8-I 専用の変換表がなく、 ISO-8859-8-I のものを使うことになっています。

[21] x-user-defined は、構造上は単一バイト符号化ですが、 Encoding Standard では変換表ではなくアルゴリズム的に変換する別種の符号化として扱っています。

[24] 単一バイト符号化の一覧

複数バイト符号化

[27] ISO-2022-JP 以外の複数バイトの符号化は、 スカラー値列符号化したものと、 そのスカラー値列を任意のスカラー値列リストに分割し、 それぞれを符号化してから連結したものが等しくなるという性質があります。

[29] ですから、 ISO-2022-JP 以外は、符号化器内の状態を保持せずとも、 文字ストリームを読み込みながら符号化したバイトストリームに書き込んでいくことができます。

[30] 複数バイトの符号化は、 バイト列復号したものと、 そのバイト列を任意の位置で分割してから復号して連結したものが等しいとは限りません (等しくならない場合が多いです)。

[28] 複数バイト符号化の一覧
n
名前
ds
復号器の状態
n
UTF-8
ds
符号位置 (21ビット整数)、状態 (数ビット)
n
GBK
ds
先導バイト (8ビット整数)、第2バイト (8ビット整数)、第3バイト (8ビット整数)
n
gb18030
ds
先導バイト (8ビット整数)、第2バイト (8ビット整数)、第3バイト (8ビット整数)
n
Big5
ds
先導バイト (8ビット整数)
n
EUC-JP
ds
先導バイト (8ビット整数)、第2バイト (8ビット整数)
n
ISO-2022-JP
ds
先導バイト (8ビット整数)、状態 (数ビット分)
n
Shift_JIS
ds
先導バイト (8ビット整数)
n
EUC-KR
ds
先導バイト (8ビット整数)
n
UTF-16BE
ds
先導バイト (8ビット整数null)、先導サロゲート (16ビット整数null)
n
UTF-16LE
ds
先導バイト (8ビット整数null)、先導サロゲート (16ビット整数null)

特別な符号化

[11] いくつかの符号化は、ラベルが指定されても他の符号化と読み替えるとの特別な扱いが規定されています。

符号化の取得を参照。

[26] 符号化名前は、 ラベルの1つになっています。 かつては replacement だけは、 replacement というラベルが存在していませんでした。

演算

[31] 符号化を取得により、符号化ラベルから文字符号化を得ることができます。

[17] 符号化器復号器も参照。

他の定義

[5] RFC 7303 では、特定の XML MIME実体で実際に用いられている MIME charset のことを文字符号化 (character encoding) (文脈で明確な場合は符号化 (encoding) ) と呼んでいます >>4

[6] charset 引数encoding 擬似属性に指定されている値ではなく、実際に符号化に用いられているものを指しています。

歴史

[1] (X)HTML5 Tracking ( 版) <http://html5.org/tools/web-apps-tracker?from=4306&to=4307>

[2] Character Model for the World Wide Web 1.0: Fundamentals ( ( 版)) <http://www.w3.org/TR/charmod/#def-CES>

[3] Core:Character Encodings ( ( 版)) <http://alcme.oclc.org/openurl/servlet/OAIHandler?verb=ListRecords&metadataPrefix=oai_dc&set=Core:Character+Encodings>