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と同一視されることもある。
構造
第1バイト
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
A
|
B
|
C
|
D
|
E
|
F
|
0
|
␀
|
␁
|
␂
|
␃
|
␄
|
␅
|
␆
|
␇
|
␈
|
␉
|
␊
|
␋
|
␌
|
␍
|
␎
|
␏
|
1
|
␐
|
␑
|
␒
|
␓
|
␔
|
␕
|
␖
|
␗
|
␘
|
␙
|
␚
|
␛
|
␜
|
␝
|
␞
|
␟
|
2
|
␠
|
!
|
"
|
#
|
$
|
%
|
&
|
'
|
(
|
)
|
*
|
+
|
,
|
-
|
.
|
/
|
3
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
:
|
;
|
<
|
=
|
>
|
?
|
4
|
@
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
5
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
[
|
¥
|
]
|
^
|
_
|
6
|
`
|
a
|
b
|
c
|
d
|
e
|
f
|
g
|
h
|
i
|
j
|
k
|
l
|
m
|
n
|
o
|
7
|
p
|
q
|
r
|
s
|
t
|
u
|
v
|
w
|
x
|
y
|
z
|
{
|
|
|
}
|
‾
|
␡
|
8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A
|
|
。
|
「
|
」
|
、
|
・
|
ヲ
|
ァ
|
ィ
|
ゥ
|
ェ
|
ォ
|
ャ
|
ュ
|
ョ
|
ッ
|
B
|
ー
|
ア
|
イ
|
ウ
|
エ
|
オ
|
カ
|
キ
|
ク
|
ケ
|
コ
|
サ
|
シ
|
ス
|
セ
|
ソ
|
C
|
タ
|
チ
|
ツ
|
テ
|
ト
|
ナ
|
ニ
|
ヌ
|
ネ
|
ノ
|
ハ
|
ヒ
|
フ
|
ヘ
|
ホ
|
マ
|
D
|
ミ
|
ム
|
メ
|
モ
|
ヤ
|
ユ
|
ヨ
|
ラ
|
リ
|
ル
|
レ
|
ロ
|
ワ
|
ン
|
゙
|
゚
|
E
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第2バイト
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
A
|
B
|
C
|
D
|
E
|
F
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ASCII制御文字
|
|
ASCIIと同一の文字
|
|
ASCIIと異なる文字
|
|
半角カナ
|
|
2バイト文字の第1バイト
|
|
2バイト文字の第2バイト(区番号が奇数の場合)
|
|
2バイト文字の第2バイト(区番号が偶数の場合)
|
|
未使用
|
|
Shift_JISでは空き領域や未使用であった場所に文字が追加されている。
計算方法
![{\displaystyle s_{1}={\begin{cases}\left\lfloor {\frac {k+257}{2}}\right\rfloor &{\mbox{if }}m=1{\mbox{ and }}1\leq k\leq 62\\\left\lfloor {\frac {k+385}{2}}\right\rfloor &{\mbox{if }}m=1{\mbox{ and }}63\leq k\leq 94\\\left\lfloor {\frac {k+479}{2}}\right\rfloor -\left\lfloor {\frac {k}{8}}\right\rfloor \times 3&{\mbox{if }}m=2{\mbox{ and }}k=1,3,4,5,8,12,13,14,15\\\left\lfloor {\frac {k+411}{2}}\right\rfloor &{\mbox{if }}m=2{\mbox{ and }}78\leq k\leq 94\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9650c112f683e2497cfa10b482598c75ca8c1ffd)
![{\displaystyle s_{2}={\begin{cases}t+63&{\mbox{if }}k{\mbox{ is odd and }}1\leq t\leq 63\\t+64&{\mbox{if }}k{\mbox{ is odd and }}64\leq t\leq 94\\t+158&{\mbox{if }}k{\mbox{ is even }}\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9f9b6b437b83956269959b69d8ab7223c8d65f28)
面区点番号からShift_JIS-2004の第1・第2バイトは以下の通り求められます。[1]
面番号を m、区番号を k、点番号を t とする。また、記号 ÷ は整数除算 (小数点以下切捨て)を表す。
第1バイト(S1)は、以下による:
- m = 1 で 1 ≦ k ≦ 62 のとき, S1 = (k + 0x101) ÷ 2.
- m = 1 で 63 ≦ k ≦ 94 のとき, S1 = (k + 0x181) ÷ 2.
- m = 2 で, k = 1, 3, 4, 5, 8, 12, 13, 14, 15 のとき, S1 = (k + 0x1df) ÷ 2 - (k ÷ 8) × 3.
- m = 2 で, 78 ≦ k ≦ 94 のとき, S1 = (k + 0x19b) ÷ 2.
第2バイト(S2)は、以下による:
- k が奇数の場合:
- 1 ≦ t ≦ 63 のとき, S2 = t + 0x3f.
- 64 ≦ t ≦ 94 のとき, S2 = t + 0x40.
- k が偶数の場合, S2 = t + 0x9e.
Windows-31Jとの非互換
Shift_JIS-2004は、Windows-31Jとは併用できない符号化方式である。
Shift_JIS |
Windows-31J |
Shift_JIS-2004
|
JIS X 0208 |
JIS X 0208 |
JIS X 0213に含まれる。
|
未定義 |
NEC特殊文字 |
(0x8740 - 0x879C) JIS X 0213に含まれる。 ただし、重複分は削除されている(「≒」「≡」「∫」「Σ」「√」「⊥」「∠」「∵」「∩」「∪」)。 「∑ (N-ARY SUMMATION)」はギリシャ大文字シグマ「Σ」で代用。 また、同領域に追加されている文字がある(「Ⅺ」「Ⅻ」)。
|
未定義 |
NEC選定IBM拡張文字 |
(0xED40 - 0xEEFC)は、JIS X 0213の1面で使用されており、併用できない。
|
未定義 |
ユーザー定義外字領域 |
(0xF040 - 0xF9FC)は、JIS X 0213の2面で使用されており、併用できない。
|
未定義 |
IBM拡張文字 |
(0xFA40 - 0xFC4B)は、JIS X 0213の2面で使用されており、併用できない。
|
関連項目
脚注
外部リンク