From: Murata Makoto Date: Mon, 31 Aug 1998 23:18:49 +0900 To: poetlabo@cap.bekkoame.or.jp (T.Nagare) Cc: makoto@mars.netspace.or.jp Subject: Re: The charset parameter MIME-Version: 1.0 Status: O 皆さんはHTMLについての啓蒙活動にたいへん熱心な方のようにお見受 けします。そこを見込んで、charsetパラメタについての啓蒙活動をお 願いいたします。 国内では、METAタグの中でcharsetパラメタを指定すれば、文字符 号化スキームを明示できるという誤解が多いようです。これは誤り で、MIME headerにおいて、text/htmlのcharsetパラメタを指定し なければいけません。後述しますが、Apacheを使っているなら、 root以外の普通のユーザにも簡単にできることです。METAタグによ る指定はあくまで補助的なもの(機能しないこともあるもの)と考 えるべきでしょう。RFC 2070にも、charsetパラメタを用いるのが 本来の姿であると明言されています。 HTTP 1.1(RFC 2068)はcharsetパラメタが絶対で、ほかの情報は少 なくとも最初は無視されると明言しています(そして、HTTP WGの議 長は変更を非常に強く拒否しています)。なお、HTTP 1.1はMIMEと は似て非なる機構を用いているのですが、本来のMIMEならcharset パラメタの省略値はUS-ASCIIであるとRFC 2046に規定されています。 IANAにおけるメディアタイプの登録リスト[1]はtext/htmlの定義と してRFC 1866だけを参照していますが、RFC 1866ではcharsetの defaultはUS-ASCII (HTTPの場合に限ってiso-8859-1)だとしていま す。すなわち、METAタグは関係ありません。RFC 2277とRFC 2130は 文字の扱いに関するIETFの方針を記述しているRFCですが、ここで もMIMEヘッダによるcharset指定を推奨しています。 HTML 4.0では確かにMETAタグの中でcharsetを指定すること、ビッ トパターンを見て推定することに言及しています。しかし、これら は日本のための当面の救済措置でしかありません。すなわち、日本 がcharsetパラメタを正しく付けないから、やむなく認めているだ けです(そして、W3Cは認めていますがIETFは認めていません)。W3C にも、良いことだと思って認めている人は一人もいないようです。 混乱を助長するから、METAタグもビットパターンによる推定も禁止 すべきだと強く主張する人もいます。 RFC 2376はメディアタイプtext/xmlを規定しているRFCですが、XML 文書中にあるencoding declarationを無視することを明言していま す。すなわち、text/xmlの場合はcharsetパラメタが絶対です。そ して、HTML 5.0はXMLに従って再設計されますから、charsetパラメ タが絶対になるように改訂される可能性があります。(なお、IESG の指示により、text/xmlのcharsetパラメタのdefaultはつねに US-ASCIIになっています)。 現状とまったく合わないという理由で、charsetパラメタを絶対視 することに反対される方も多いと思います。しかし、HTML以外のフォー マットがWWW上には存在すること、国際化のためにはproxy server によるコード変換が有効であること、電子署名などのセキュリティ が将来は必要になることを考慮すると、どう考えてもcharsetパラ メタ以外の解は思いつきません。METAタグによるcharsetの指定は、 proxy serverによるコード変換に対して無力です。現状でも DeleGateサーバによる変換によって、METAタグ中のcharset指定が 信用できなれば、文字化けを起こします。proxy serverがMETAタグ も書き換えればいいという意見もあるかと思いますが、本来proxy はHTML文書を書き換えるべきではないと思います(電子署名が導入 されたときはどうするのか?)。また、HTTPプロトコルからcharset を隠してしまえば、charsetについてのnegotiationと自動変換はほ とんど不可能になります。また、charsetを指定するための構文を 個々のメディアタイプが独自に導入することを認めてしまえば、原 理的にそのような手段を持ち得ないフラットテキストの国際化は不 可能になってしまいます。 最後に、charsetパラメタをどうやって指定するかについて簡単に書き ます。Apacheを用いているのなら、.htaccessに AddType "text/html; charset=iso-2022-jp" html と書くだけで充分です。関連資料については、XML FAQの日本語訳[2] のD.5の訳注をご覧ください。将来は、WWWサーバへの文書登録機構が 面倒を見てくれるべきことだと私は考えています。 なお、ほかのWWWサーバでこういう指定ができるかどうかは私も未 確認ですが、W3Cでも会員企業(Microsoft社とNetscape Communications社を含む)に協力を呼びかけているようです。 text/xmlではcharsetが明らかに絶対なので、指定が簡単にできな いWWWサーバはXMLには使えないと考えるべきでしょう。 日本の今後の対応ですが、WWサーバがcharsetパラメタを正しく付 けるのが本来の方法であること、METAタグが便法でしかない(root 以外の情報提供者がcharsetを設定できないときのための)ことを 周知させ、良い方向に少しずつ改めていくしかありません。どうせ、 UTF-16やUCS-4のときはMETAタグにまで行き着けないのですから。 charsetパラメタが絶対というのは現状と合っていないのは確かで すが、考えに考えても、これ以外に解決の方法は思いつきません。 ご意見・ご質問は歓迎いたします。ご賛同される方は、WWWなどでの啓 蒙活動をよろしくお願いいたします。 [1] ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets [2] http://www.fxis.co.jp/DMS/sgml/xml/xmlfaq.html Lutenist Internet: makoto@mars.netspace.or.jp Nifty: VEQ00625 名前: 村田真