* 実体符号化指定属性形式 (SGML 公式システム識別子)
[1] [[SGML]] [[公式システム識別子]]の[DFN[[RUBYB[実体符号化指定] [entity encoding specification]] ([CODE(SGML)[[[encoding]]]]) [[属性形式]]]]の[[属性]]は、
[[実体]]で使用されている[[符号化]]を指定します。

[2] 仕様書:
- [[ISO/IEC 10744]]:1997
-- [CSECTION[A.6.5.2 Encoding-related attributes]]
<http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.6.5.html#clause-A.6.5.2>

[3]
:[[参照具象構文名]]:[CODE(SGML)[[[encoding]]]]
:[[完全名]]:[RUBYB[実体符号化指定][entity encoding specification]]
:[[属性]]:
,属性名,==
,完全名,参照具象構文名
,[RUBYB[実体符号化指定][entity encoding specification]],[CODE(SGMLa)[[[encoding]]]]
,[RUBYB[[[ビット組合せ変形形式]]][bit combination fransformation format]],[CODE(SGMLa)[[[bctf]]]]

[7] [[実体]]が[[蓄積]]される時に[[文字]]は[[内部表現]]から[[蓄積庫]]における[[オクテット列]]に変換されますが、
内部表現はシステム依存なので、その変換を直接指定するのではなく、
文字からオクテット列への[[写像]]を属性で指定します。
[[蓄積庫管理器]]はこの指定と内部表現をもとに実際の変換方法を決定します。
[SRC[ISO/IEC 10744:1997 A.6.5.2]]

[8] 符号化方式を指定する方法は2種類あります。
- '''実体符号化指定属性により完全に指定''':
実体符号化指定 ([CODE(SGMLa)[[[encoding]]]]) 
属性で特定の符号化方式を指定します。
この場合符号化方式は[[文書文字集合]]とは独立となります。
- '''ビット組合せ変形形式属性により部分的に指定''':
ビット組合せ変形形式 ([CODE(SGMLa)[[[bctf]]]])
属性で固定長のビット組合せからオクテット列への写像を指定します。
この場合、変換は次の2つの組合せとなります。
= [[文書文字集合]]によって決まる、[[文字]]から固定長ビット組合せへの写像
= 固定長ビット組合せから [CODE(SGMLa)[bctf]]
によって指定されたオクテット列への写像

実体を読む時には[[逆変換]]を行います。

[9] [[蓄積庫物体]]が[Q[[[オクテット]]]]が実際には[[包含子実体]]の文字であるような[[包含子]]である場合には、
属性は通常包含子か包含される物体のいずれかにのみ指定し、
両方には指定しません。 [SRC[ISO/IEC 10744:1997 NOTE 510]]


[[#comment]]

* 実体符号化指定属性形式実体符号化指定属性 (SGML 公式システム識別子)
[5] [[SGML]] [[公式システム識別子]]の[RUBYB[実体符号化指定] [entity encoding specification]]
([CODE(SGML)[[[encoding]]]]) [[属性形式]]の[DFN[[RUBYB[実体符号化指定] [entity encoding specification]] ([CODE(SGML)[[[encoding]]]]) [[属性]]]]は、
[[実体]]で使用されている[[符号化方式]]を指定します。

[4] 仕様書:
- [[ISO/IEC 10744]]:1997
-- [CSECTION[A.6.5.2 Encoding-related attributes]]
<http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.6.5.html#clause-A.6.5.2>

[6]
:[[属性形式]]:[RUBYB[[[実体符号化指定]]][entity encoding specification]]
([CODE(SGML)[[[encoding]]]])
:[[参照具象構文名]]:[CODE(SGMLa)[[[encoding]]]]
:[[完全名]]:[RUBYB[実体符号化指定][entity encoding specification]]
:[[属性値]]:[CODE(SGML)[[[NAME]]]]
(符号化方式を表す[[登録値記法]]名)
:[[既定値]]:([[ビット組合せ変形形式]] ([CODE(SGMLa)[[[bctf]]]])
[[属性]]も省略された時) [CODE(SGML)[[[same]]]]

[10] [[ビット組合せ変形形式]] ([CODE(SGMLa)[[[bctf]]]])
[[属性]]と[[実体符号化指定]] ([CODE(SGMLa)[[[encoding]]]])
[[属性]]は、高々1つのみ指定できます。
[SRC[ISO/IEC 10744:1997 A.6.5.2]]

[11] この属性は [[SGML文実体]], [[[CODE(SGML)[CDATA]]実体]]、
[[[CODE(SGML)[SDATA]]実体]]にのみ指定できます。
[SRC[ISO/IEC 10744:1997 A.6.5.2]]

[12] [[ISO/IEC 10744]]:1997 で定義されている符号化方式:
,参照具象構文名,公式公開識別子,説明
,[CODE(SGML)[[[UCS-2]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING UCS-2 Encoding//EN]]]],[[ISO/IEC 10644]] [[UCS]] 2オクテット BMP 形 ([[UCS-2]])
,[CODE(SGML)[[[UCS-4]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING UCS-4 Encoding//EN"]]]],[[ISO/IEC 10644]] [[UCS]] 4オクテット正準系 ([[UCS-4]])
,[CODE(SGML)[[[UTF-8]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING UTF-8 Encoding//EN]]]],[[ISO/IEC 10644]]‐1:1993 + [[追補]]の附属書 P の UCS 変形形式 8 ([[UTF-8]])
,[CODE(SGML)[[[UTF-16]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING UTF-16 Encoding//EN]]]],[[ISO/IEC 10644]]‐1:1993 [[追補]]の附属書 Q の UCS 変形形式 16 ([[UTF-16]])
,[CODE(SGML)[[[UTF-7]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING UTF-7 Encoding//EN]]]],[[RFC 1642]] UCS 変形形式 7 ([[UTF-7]])
,[CODE(SGML)[[[UNICODE]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING UNICODE Encoding//EN]]]],[[ISO/IEC 10646]] [[BMP]] の2オクテット表現で、 [CODE(char)[[[BOM]]]] が使用可能 (なければシステムの[[バイト順]])
,[CODE(SGML)[[[EUC-JP]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING EUC-JP Encoding//EN]]]],[[IANA]] 登録 [[charset]] [CODE(charset)[[[EUC-JP]]]]
,[CODE(SGML)[[[SJIS]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING SJIS Encoding//EN]]]],[[IANA]] 登録 [[charset]] [CODE(charset)[[[Shift_JIS]]]]
,[CODE(SGML)[[[IS8859-1]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-1 Encoding//EN]]]],[[ISO/IEC 8859]]‐1 (1オクテット)
,[CODE(SGML)[[[IS8859-2]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-2 Encoding//EN]]]],[[ISO/IEC 8859]]‐2 (1オクテット)
,[CODE(SGML)[[[IS8859-3]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-3 Encoding//EN]]]],[[ISO/IEC 8859]]‐3 (1オクテット)
,[CODE(SGML)[[[IS8859-4]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-4 Encoding//EN]]]],[[ISO/IEC 8859]]‐4 (1オクテット)
,[CODE(SGML)[[[IS8859-5]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-5 Encoding//EN]]]],[[ISO/IEC 8859]]‐5 (1オクテット)
,[CODE(SGML)[[[IS8859-6]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-6 Encoding//EN]]]],[[ISO/IEC 8859]]‐6 (1オクテット)
,[CODE(SGML)[[[IS8859-7]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-7 Encoding//EN]]]],[[ISO/IEC 8859]]‐7 (1オクテット)
,[CODE(SGML)[[[IS8859-8]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-8 Encoding//EN]]]],[[ISO/IEC 8859]]‐8 (1オクテット)
,[CODE(SGML)[[[IS8859-9]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING ISO8859-9 Encoding//EN]]]],[[ISO/IEC 8859]]‐9 (1オクテット)
,[CODE(SGML)[[[same]]]],[CODE(SGML)[[[ISO/IEC 10744:1997//NOTATION FSIDR ENCODING No change in encoding//EN]]]],この[[蓄積域物体]]の [[SOS]] が指定されている蓄積域物体の符号化と同じ

(いずれも実装は必須ではありません。)

[13] [CODE(SGML)[UCS-2]] と [CODE(SGML)[UCS-4]] と
[CODE(SGML)[UNICODE]] は
ISO/IEC 10646 の版を指定していませんが、 [CODE(SGML)[UTF-8]]
と [CODE(SGML)[UTF-16]] は [WEAK[(規定する附属書が追補で追加されたものだったせいでしょうが)]]
版が指定されています。

[CODE(SGML)[UNICODE]] は [[Unicode規格]]ではなく
ISO/IEC 10646 を参照しています [WEAK[(実質的には同じですけどね)]]。

[CODE(SGML)[UCS-2]] と [CODE(SGML)[UCS-4]] と
[CODE(SGML)[UTF-8]] と [CODE(SGML)[UTF-16]]
はバイト順や [CODE(char)[BOM]] に関する規定が 10744 にはありません。
[CODE(SGML)[UCS-2]] と [CODE(SGML)[UCS-4]] は 10646
の規定的には[[大エンディアン]]と思われます。
特に規定がないのでいずれも大エンディアン、
[CODE(char)[BOM]] はいずれもなしを 10744 
は想定していたのではないかと推測しますが、 10644
には後から [Q[[CODE(char)[BOM]] はあってもなくてもよい]]
という感じの附属書が追加されていたりします。
[WEAK[(その辺りの規格制定の順序はどうでしたっけ?)]]

[CODE(SGML)[IS8859-[VAR[N]]]] も版の指定がありません。

[CODE(SGML)[EUC-JP]] と [CODE(SGML)[SJIS]] は[Q[インターネットの登録]]を参照しています。
本稿の執筆の時点では [CODE(SGML)[EUC-JP]] は IANA
の登録簿で簡単に定義され、 [CODE(SGML)[SJIS]]
([CODE(charset)[[[Shift_JIS]]]]) は [[JIS X 0208]]:1997
の附属書1を参照しています。

[[#comment]]

* メモ