[1] [[HTML]] の [CODE(HTMLe)[[[a]]]] 要素・[CODE(HTMLe)[[[link]]]] 要素の
[DFN[[CODE(HTMLa)[charset]] 属性]]は、
リンクで指定された[[資源]]の[[文字符号化]]の''ヒント''を指定します。

[13] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の [DFN[[CODE(XMLa)@en[charset]] [[擬似属性]]]]は、
参照されている[[スタイル・シート]]の[[文字符号化]]の''[RUBYB[[[ヒント]]]@en[advisory]]''を指定します
[SRC[>>14]]。

[12] この属性は追加された当時は有用であろうと考えられていましたが、
結局有意義に使われたことはほとんど無く、しかも Web
の技術的体系においては実際上''不要''な存在です。

* 代替

[19] [[リンク先]]の[[応答]]の[[文字コード]]は、[[リンク先]]の[[応答]]の
[CODE(HTTP)@en[Content-Type:]] [[ヘッダー]]で指定するべきものです。
[[リンク元]]に書く必要はありません。

* 仕様書

[8]
- [[HTML 4]]
-- [CODE(HTMLe)[a]] 要素 [CODE(HTMLa)[charset]] 属性
<IW:HTML4:"struct/links.html#adef-charset">
-- [CITE[12.1.5 Internationalization and links]]
<IW:HTML4:"struct/links.html#idx-link-4">
- [14] [CITE@en[Associating Style Sheets with XML documents 1.0 (Second Edition)]] ([TIME[2010-10-28 23:13:17 +09:00]] 版) <http://www.w3.org/TR/2010/REC-xml-stylesheet-20101028/#PA-charset>

* 属性値

** データ型

[4] この属性は [CODE(SGML)[%[[Charset]]]]
です。つまり、 [[IETF]] [[charset]] を指定します。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[15] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]では、[[属性値]]は[[妥当な文字符号化名]]でなければ[['''なりません''']]
[SRC[>>14]]。

** 既定値

[5] この属性は省略可能です。

[16] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の仕様では[[既定値]]は明示されていません。

* 処理モデル

[18] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の場合、 [CODE(XMLa)@en[[[charset]]]]
[[擬似属性]]の値は、他の出典 [WEAK[([[HTTP]] や[[スタイル・シート]]自体など)]]
からの[[文字符号化]]の情報がない場合に限って使われることが想定されています [SRC[>>14]]。

* 歴史

[7] 
[[HTML]]
由来で 
[[DTBook]] の [CODE[link]] [[要素]]にもありました。


[20] [CITE@en[How to make a Multilingual Web server]], [TIME[2025-06-16T14:34:57.000Z]], [TIME[2006-05-12T03:29:46.079Z]] <https://web.archive.org/web/20060512031333/http://vancouver-webpages.com/multilingual/howto.html>

>
It is recommended that the charset be specified in the parent document also, so that the browser will have the correct font selected before any of the document is parsed, for instance:
[PRE[
<A HREF="DocumentURL" CHARSET="iso-8859-5">Document Name<\A>
]PRE]


** HTML5

[11] 一時期 [[HTML5]] の仕様書には[[コメント化]]された形で [CODE(HTMLe)@en[[[link]]]]
[[要素]]の [CODE(HTMLa)@en[[[charset]]]] [[属性]]の規定が含まれていましたが、
後に削除されています。

** [CODE(XML)@en[xml-stylesheet]] 処理指令

[17] 第1版では [[HTML4.0]] を参照する形で定義されていましたが、第2版では独自に定義しています
[SRC[>>14]]。

;; [CITE[Associating Style Sheets with XML documents]] ([TIME[2000-05-03 23:40:39 +09:00]] 版) <http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/#The%20xml-stylesheet%20processing%20instruction>

* 関連

[2] この属性は [CODE(HTMLa)[[[href]]]] 属性
([CODE(HTMLe)[script]] 要素では [CODE(HTMLa)[[[src]]]] 属性)
が指定されているときのみ使って構わないはずですが、
HTML 4 仕様書にはそう明記されていません。

[3] ウェブでは、リンク先資源自体が charset 情報を持っているのが普通です。
UA は [CODE(HTMLa)[charset]] 
属性の情報を使って[Q[ごみ]]を表示してしまわないように注意するべき、
最低警告するべきだと HTML 4 仕様書は言ってはいますが、
あくまでも [CODE(HTMLa)[charset]] 属性はリンク先に飛ぶ前に利用者や UA
が判断するための材料として用意されているようで、
リンク先資源の charset 情報を上書きできるようなものではありません。

とはいうものの、 [CODE(HTMLa)[charset]] の値から [[HTTP]]
の [CODE(HTTP)[[[Accept-Charset]]]] 
を生成するような使い方をしても面白いかもしれません。

[[#comment]]


** 例

[6] [CODE(HTMLe)[a]] によるリンクの例 [SRC[HTML 4 12.2]]
[PRE(HTML)[
For more information about W3C, please consult the 
<A href="http://www.w3.org/" charset="ISO-8859-1">W3C Web site</A> 
]PRE]

皮肉なことに [[W3C]] のウェブ頁はその後 [CODE(charset)[[[ISO-8859-1]]]]
ではなくなっています。

* メモ

[9]
[CITE[Bug 4864 - ステータスバーにURLを表示する仕様の改善]] 
<http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=4864>

[[状態棒]]に[[URI]]を表示するときに[[百分率符号化]]を[[復号]]するにあたり、[CODE(HTMLa)@en[[[charset]]]][[属性]]があれば、その[[文字コード]]と考えて[[復号]]したらよいのではという話。
([[名無しさん]] [sage] [WEAK[2005-12-25 13:05:37 +00:00]])

[10]
あるいは、[CODE(HTMLa)@en[[[href]]]]に[[非URI文字]]が含まれているときに[CODE(HTMLa)@en[[[charset]]]][[属性]]の[[文字コード]]で[[百分率符号化]]して[[URI]]を作るのがよいとか。
