[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: [w3m-dev 03918] Re: charset attribute of anchor tag



白井です。はっきりさせるために規格書の引用ばっかりですが。

From: patakuti@t3.rim.or.jp さん曰く
Subject: [w3m-dev 03918] Re: charset attribute of anchor tag
Message-ID: <20030619231524G.patakuti@t3.rim.or.jp>
Date: Thu, 19 Jun 2003 23:15:24 +0900 (JST)

> > この変更が適用されている w3m と,CVS 幹先端の emacs-w3m を使うと,
> > 
> >     <a href="どこか/を/指す/日本語/の/URI" charset="shift_jis">
> > 
> > というようなリンクが辿れるようになります.
> 
> なんで、辿れるようになっちゃうのでしょうか?
> 
> A要素の charset 属性って、リンク先の文書の符号化方法を指定するため
> のものですよね??

そのようですね。HTML4.1 12.2 A要素(なんで日本語なんだ ^^;)

>> charset = charset [CI]
>>  This attribute specifies the character encoding of the resource
>>  designated by the link. Please consult the section on character
>>  encodings for more details.
>> 
>>  この属性は、当該リンクが指し示すリソースの文字符号化方法を指定
>>  する。詳しくは文字符号化方法の項を参照されたい。

ですよ。> (どっか行っちゃったのかな?)土屋さん 

href = uri [CI] の方をたどると、
B.2.1 Non-ASCII characters in URI attribute values
に行き着いて、

>> B.2.1 URI属性値の非ASCII文字
>> 
>> URIには非ASCII値が含まれない ([URI]の2.1を参照)とはいえ、HTML文
>> 書の著者が、URI属性値 (DTD中で%URI;と定義されている値)のつもりで
>> 非ASCIIの値を指定する場合があり得る。例えば、次の href属性値は不
>> 正である。
>> 
>> <A href="http://foo.org/H(a の上にちび○)kon">...</A>
>> 
>> こうした場合に非ASCII文字を扱うため、ユーザエージェントが次の規
>> 則に従うことを推奨する。
>> 
>>    1. 与えられた各文字を、UTF-8 ([RFC2279]参照)の1バイトあるいは
>>      複数バイトで表現する。
>>      
>>    2. URIのエスケープ機構により、このバイトをエスケープする。す
>>      なわち、各バイトをバイト値の十六進表現HHを用いて「%HH」で表
>>      す。
>> 
>> この変換規則に従うと、 [RFC1738]の2.2あるいは[RFC2141]の2が定め
>> るシンタクス的に正当なURIが得られる。得られるURIは、HTML文書が符
>> 号変換され得る文字符号化方法に依存しない形式である。
>> 
>> 注意。古いユーザエージェントの中には、HTMLのURIを、当該文書の文
>> 字符号化方法をそのまま適用して処理するものもある。また、古いHTML
>> 文書の中にはこうした処理方法に依存しているため、符号変換に際して
>> 破綻するようなものもある。そうした古い文書を処理するユーザエージェ
>> ントは、正当な文字集合の範囲にない文字を含むURIを受け取った場合、
>> まず初めにUTF-8に基づく変換を試みねばならない。そして変換結果が
>> 巧く扱えないものである場合のみ、当該文書の文字符号化方法のバイト
>> に基づくURIの変換を試みるようにしなければならない。

ですって。

じゃぁ、emacs-w3m ではどうすれば良いのか? は、また来週。

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)