日本語の文字コード

ウェブ文書での外部文字符号化方式の問題では、
WWWサーバがtext/htmlのcharsetパラメタを設定するのが本来の姿です。


JIS・Shift_JIS・EUC(Extensive Unix Code)

文字一般の資料です。ISO 2022とISO-2022-JPが分かるようにと選んでいます。

  1. rfc1468(jp):ISO-2022-JP インターネット通信文の日本語文字符号化
    7ビット文字・JIS X 0201カナ除外・ASCIIとの混在切り替え(ISO 2022)
  2. rfc1554(jp):ISO-2022-JP-2 ISO-2022-JPの多国籍言語への拡張性
  3. rfc2237(jp):ISO-2022-JP-1 インターネット通信文の日本語文字符号化

HTML文書での文字指定

 日本語HTML文書は、JIS・Shift_JIS・EUC(extensive unix code)が使われています。どの字体コード化を選んでいるかは以下のように記載します:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-2022-JP">

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUC-JP">

コードとIANA登録

 インタネット上で使うさまざまなコードは、IANA(Internet Assigned Numbers Authority)という組織が管理しています。ここで指定する文字コードも管理し ています。

-------------------------------------------------------------------------
Name: ISO-2022-JP  (preferred MIME name)               [RFC1468,Murai]   
MIBenum: 39                                                              
Source: RFC-1468 (see also RFC-2237)                                     
Alias: csISO2022JP                                                       
                                                                         
Name: ISO-2022-JP-2  (preferred MIME name)              [RFC1554,Ohta]   
MIBenum: 40                                                              
Source: RFC-1554                                                         
Alias: csISO2022JP2                                                      
                                                                         
Name: JIS_Encoding                                                       
MIBenum: 16                                                              
Source: JIS X 0202-1991.  Uses ISO 2022 escape sequences to              
        shift code sets as documented in JIS X 0202-1991.                
Alias: csJISEncoding                                                     
                                                                         
Name: Shift_JIS  (preferred MIME name)                                   
MIBenum: 17                                                              
Source: A Microsoft code that extends csHalfWidthKatakana to include     
        kanji by adding a second byte when the value of the first        
        byte is in the ranges 81-9F or E0-EF.                            
Alias: MS_Kanji                                                          
Alias: csShiftJIS                                                        
                                                                         
Name: Extended_UNIX_Code_Packed_Format_for_Japanese                      
MIBenum: 18                                                              
Source: Standardized by OSF, UNIX International, and UNIX Systems        
        Laboratories Pacific.  Uses ISO 2022 rules to select             
               code set 0: US-ASCII (a single 7-bit byte set)            
               code set 1: JIS X0208-1990 (a double 8-bit byte set)      
                           restricted to A0-FF in both bytes             
               code set 2: Half Width Katakana (a single 7-bit byte set) 
                           requiring SS2 as the character prefix         
               code set 3: JIS X0212-1990 (a double 7-bit byte set)      
                           restricted to A0-FF in both bytes             
                           requiring SS3 as the character prefix         
Alias: csEUCPkdFmtJapanese                                               
Alias: EUC-JP  (preferred MIME name)                                     
                                                                         
Name: Extended_UNIX_Code_Fixed_Width_for_Japanese                        
MIBenum: 19                                                              
Source: Used in Japan.  Each character is 2 octets.                      
                code set 0: US-ASCII (a single 7-bit byte set)           
                              1st byte = 00                              
                              2nd byte = 20-7E                           
                code set 1: JIS X0208-1990 (a double 7-bit byte set)     
                            restricted  to A0-FF in both bytes           
                code set 2: Half Width Katakana (a single 7-bit byte set)
                              1st byte = 00                              
                              2nd byte = A0-FF                           
                code set 3: JIS X0212-1990 (a double 7-bit byte set)     
                            restricted to A0-FF in                       
                            the first byte                               
                and 21-7E in the second byte                             
Alias: csEUCFixWidJapanese                                               
-------------------------------------------------------------------------

 よく、"charset=x-sjis"や "charset=x-euc-jp"を見かけますが、これらは、IANAには登録されていません。しかし、ブラウザによっては、これらは解釈するけどIANAに登録されているのを解釈しないというのもあります。Navigator 2.0などは、x-sjisは解釈するけど Shift_JISは解釈しません。

 漢字コード変換し、charset=iso-2022-jpを指定するのがどのブラウザでも見える方法です。これは、 HEAD部分のトップに記載しておくべきです。 これで、タイトルにも日本語を使うことができます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=iso-2022-jp">
<TITLE>ISO-2022-JP版文書</TITLE>
<META name="keywords" content="ISO-2022-JP">
<LINK rev=made href="mailto:y.kato@personal.email.ne.jp">
</HEAD>
<BODY>

 文書全体のコメントは、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!--==ここに文書についてのコメントを書くと解説されていますが、それはアスキー
文字の場合です。日本語などを記載するには、charset=iso-2022-jp指定後に書かな
ければならないので、下のように記載します。==-->
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=iso-2022-jp">
<TITLE>ISO-2022-JP版文書</TITLE>
<META name="keywords" content="ISO-2022-JP">
<LINK rev=made href="mailto:y.kato@personal.email.ne.jp">
</HEAD>
<!--================
日本語の場合、文書全体についてのコメントは文字指定の後のここに記載します。
=================-->
<BODY>


WWWサーバがtext/htmlのcharsetパラメタを設定するのが本来の姿です。

 しかしながら、外部文字符号化方式の問題では、WWWサーバがtext/htmlのcharsetパラメタを設定するのが本来の姿です
<META http-equiv="content-type" content="text/html; charset=iso-2022-jp">
の意味と限界が述べられています。

関連資料: [xmlFAQのD.5][W3C CSS1:付録C:符号化]

[HTML 2.x 日本語版]からの引用です。

6.外部文字コード化の問題

 テキスト文書の適切な解釈には文字コード化体系が分かっていなければなりません。しかし、現在のHTTPサーバーは Content-Typeヘッダーと適切なcharsetパラメーターを含んでいません。charsetパラメーターを受け取った時、認知されないメディア・タイプを宣言するブラウザが存続しつづけることでその気にさせられないとしても、これは悪い振る舞いです。表示代行手段の装備制作者は、利点がないとしても、ソフトウェアーをこのパラメーターに寛容にするように強く薦めます。適切なラベルは非常に望ましいのですが、それが無い場合の決定的な影響を最小にするために幾つかの予防的な尺度があります:

 文書が元のHTML文書にあるリンクからアクセスされた場合、リンクの意味(AやLINK)のある要素の属性リストに、特にlinkExtraAttributes実体に、CHARSET属性を加えます。その属性の値は、ハイパーリンクによって指し示されている資源によって使われている文字コード化体系の表示代行手段へのヒントになるものでなけらばなりません;それは資源のMIME charsetパラメーターの適切な値でなければなりません。

 どの文書においても、コード化体系の示唆を以下の様に文書頭部(ヘッダー)のできるだけはじめに含むことは可能です:

    <META HTTP-EQUIV="Content-Type"
     CONTENT="text/html; charset=ISO-2022-JP">

 これは絶対安心といえるものではありませんが、メタ要素が解析される迄は少なくともただASCII文字のようにASCII値オクテットがあるだけ、といったコード化体系の場合はうまく働くでしょう。上記の様に信頼がおけないメタの代わりに、サーバーが文字コード化情報を得るのがよりいい方法であることに注意して下さい;より詳しいことや提案については[NICOL2]を参照下さい。

 定義にとって、文書資源から受け取る"charset"パラメーターが最も権威あるもので、次いで上で述べたようなメタ要素の内容による優先順位に続き、在るなら最後にアンカー(固定点)のCHARSETパラメーターです。

[NICOL2] 
       G.T. Nicol, "MIME Header Supplemented File Type", 
       Work in Progress, EBT, October 1995. 

資料


[ホーム] [HTML 4.0へ] [HTML 3.2へ] [なぜDTDが必要か]


iso-2022-jp Japanese (JIS) 版インデックスページで、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
URL:http://www.asahi-net.or.jp/~bd9y-ktu/html4rec_f/jis.html
加藤泰孝 Yasutaka Kato <email:y.kato@personal.email.ne.jp>
Last modified 00.06.01