Shift JIS-2004

Shift_JIS-2004は、日本の文字を符号化するのに使われる文字コードである。JIS X 0213の符号化方式のひとつである。JIS X 0213:2004の附属書1で定義されている。
JIS X 0208の符号化方式のひとつであるShift_JISと同様に、JIS X 0201の1バイト文字とJIS X 0213の2バイト文字とを組み合わせて運用する符号化方式である。Shift_JISの上位互換となっている。
JIS X 0213には94文字×94文字の面が2つあるが、JIS X 0208の上位互換である第1面はShift_JISの第1バイト0xEFまでの範囲に収まる。面区点番号からShift_JIS-2004のバイト値を求める際、この範囲までの計算方法はShift_JISと同じである。Shift_JIS-2004ではさらに、第2面 (第4水準漢字) を収録するために、第1バイト0xF0から0xFCまでの範囲を用いる。2面で、区番号が1, 3, 4, 5, 8, 12, 13, 14, 15 のときは、第1バイトは (区番号 + 0x1DF) ÷ 2 − (区番号 ÷ 8) × 3 となる。区番号が78から94までのときは、第1バイトは (区番号 + 0x19B) ÷ 2 となる。こうしてJIS X 0213の11,233文字全てを2バイトで表現する。
なお、JIS X 0213の初版 (2000年) では、この符号化方式はShift_JISX0213と命名されていた。2004年改正で追加されたUCS互換漢字10文字の有無だけが異なるが、大きな違いではないためShift_JIS-2004と同一視されることもある。
構造.
Shift_JISでは空き領域や未使用であった場所に文字が追加されている。
計算方法.
面区点番号からShift_JIS-2004の第1・第2バイトは以下の通り求められます。
面番号を m、区番号を k、点番号を t とする。また、記号 ÷ は整数除算 (小数点以下切捨て)を表す。
第1バイト(S1)は、以下による:
第2バイト(S2)は、以下による:
Windows-31Jとの非互換.
Shift_JIS-2004は、Windows-31Jとは併用できない符号化方式である。