JIS X 0201 を1バイトで、JIS X 0208 を2バイトで符号 ふごう 化 か する可変 かへん 幅 はば 文字 もじ 符号 ふごう 化 か 方式 ほうしき 。2バイト文字 もじ は、第 だい 1バイトに8116 -9F16 またはE016 -EF16 の47通 とお り、第 だい 2バイトに4016 -7E16 または8016 -FC16 の188通 とお りを用 もち いる。
第 だい 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バイト(JIS X 0208の区 く 番号 ばんごう が奇数 きすう の場合 ばあい )
2バイト文字 もじ の第 だい 2バイト(JIS X 0208の区 く 番号 ばんごう が偶数 ぐうすう の場合 ばあい )
未 み 使用 しよう
さらに、JIS X 0213 に拡張 かくちょう したShift_JIS-2004 では、第 だい 1バイトの未 み 使用 しよう 領域 りょういき であるF016 -FC16 を利用 りよう している。
第 だい 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の誕生 たんじょう
編集 へんしゅう
1980年代 ねんだい 、パソコン 用 よう 16ビット CPU の普及 ふきゅう もあいまって、漢字 かんじ やひらがな ・カタカナ を表示 ひょうじ 可能 かのう なハードウェア を備 そな えた情報 じょうほう 機器 きき が続々 ぞくぞく と発売 はつばい された。これらの製品 せいひん では、日本語 にほんご を表現 ひょうげん できる文字 もじ 符号 ふごう 化 か 方式 ほうしき が模索 もさく されており、先行 せんこう してJIS C 6220(現在 げんざい のJIS X 0201 )の8ビット 符号 ふごう (以下 いか 「英数字 えいすうじ ・半角 はんかく カナ 」)と、JIS C 6226(現在 げんざい のJIS X 0208 、以下 いか 「漢字 かんじ 」)がよく利用 りよう されていた。この両 りょう 文字 もじ 集合 しゅうごう の混在 こんざい にあたっては、ISO 2022 によるエスケープシーケンス で文字 もじ 集合 しゅうごう を切 き り替 か える設計 せっけい となっていた。
Shift_JISの設計 せっけい では、ファイルサイズ節約 せつやく や処理 しょり 時間 じかん 短縮 たんしゅく を図 はか るため、これら文字 もじ 集合 しゅうごう をエスケープシーケンスなしで混在 こんざい 可能 かのう にすることを企図 きと した。 ISO 2022では、英数字 えいすうじ ・半角 はんかく カナ・漢字 かんじ はそれぞれ、8ビット符号 ふごう 空間 くうかん の中 なか のGL(2116 -7E16 )・GR(A116 -FE16 )のいずれか1領域 りょういき を使 つか うことで表現 ひょうげん する。このうち英数字 えいすうじ ・漢字 かんじ だけの混在 こんざい であれば英数字 えいすうじ をGL、漢字 かんじ をGRに割 わ り当 あ てることもできる[2] が、既 すで にGLに英数字 えいすうじ 、GRに半角 はんかく カナを割 わ り当 あ てた実装 じっそう が普及 ふきゅう しており、既存 きそん のGL・GR領域 りょういき に漢字 かんじ を混在 こんざい させることは困難 こんなん だった。
1982年 ねん 、漢字 かんじ の符号 ふごう 位置 いち をこれら符号 ふごう 空間 くうかん の隙間 すきま に押 お し込 こ む形 かたち でShift_JISが実装 じっそう された。これを実現 じつげん するためには、漢字 かんじ の1バイト目 め として、ISO 2022において不 ふ 使用 しよう のCR(8016 -9F16 )領域 りょういき に加 くわ え、半角 はんかく カナに割 わ り当 あ てられていたGR領域 りょういき に約 やく 3分 ぶん の1残 のこ されていた未 み 使用 しよう 領域 りょういき から捻出 ねんしゅつ することとした。さらに2バイト目 め には、ISO 2022とは異 こと なり、英数字 えいすうじ ・半角 はんかく カナに使用 しよう 済 ず みの領域 りょういき をも含 ふく む、GL、CR、GRにあたる各 かく 領域 りょういき のほぼ全 すべ てを使 つか う必要 ひつよう があった。ただし、GL領域 りょういき においては、JIS X 0201の記号 きごう に当 あ たる部分 ぶぶん は極力 きょくりょく 避 さ けた。
マイクロソフト 日本 にっぽん 法人 ほうじん 元 もと 会長 かいちょう の古川 ふるかわ 享 とおる によると、Shift_JISの制定 せいてい にはアスキー 、マイクロソフト(米 べい )、三菱電機 みつびしでんき 、マイクロソフトウェア・アソシエイツ 、デジタルリサーチ (米 べい )が関 かか わり、特 とく にアスキーの山下 やました 良蔵 りょうぞう が中心 ちゅうしん となって行 おこな われたという[3] 。これに対 たい する異説 いせつ として、京都大学 きょうとだいがく 助教授 じょきょうじゅ の安岡 やすおか 孝一 こういち は、マイクロソフトウェア・アソシエイツと三菱電機 みつびしでんき のみの共同 きょうどう 開発 かいはつ だと主張 しゅちょう していたが[4] 、山下 やました 本人 ほんにん の発言 はつげん [5] により安岡 やすおか は自説 じせつ を撤回 てっかい する発言 はつげん をしている[6] 。また古 ふる くはLife with UNIX の訳書 やくしょ (ISBN 4-7561-0783-4 ) の「UNIX人名 じんめい 事典 じてん 」翻訳 ほんやく 版 ばん 加筆 かひつ 部分 ぶぶん (p.45) で、深瀬 ふかせ 弘恭 ひろゆき に「MS漢字 かんじ コードの作者 さくしゃ の一人 ひとり 」という紹介 しょうかい 文 ぶん が書 か かれていた。
Shift_JISはマイクロソフトのMS-DOS に「MS漢字 かんじ コード」(および後 ご のMicrosoftコードページ932 )、デジタルリサーチのCP/M-86 に「SJC-26」として採用 さいよう された。両者 りょうしゃ はほぼ同 おな じだが、全角 ぜんかく スペース の扱 あつか いに違 ちが いがある。全角 ぜんかく スペースにMS-DOSは814016 を割 わ り当 あ てているが、CP/M-86は半角 はんかく スペース2文字 もじ 分 ぶん と同等 どうとう の202016 を割 わ り当 あ てている。CP/M-86での実装 じっそう は文字 もじ 列 れつ からスペースを探索 たんさく する処理 しょり が簡単 かんたん になるというプログラミング 上 うえ の利点 りてん があった。一方 いっぽう 、MS-DOSは全角 ぜんかく スペースに別 べつ のコードを割 わ り当 あ てることで、半角 はんかく 入力 にゅうりょく モードでスペースキー が2回 かい 押 お されたのか、全角 ぜんかく 入力 にゅうりょく モードでスペースキーが1回 かい だけ押 お されたのかをプログラムが判別 はんべつ できるようにした。これは当時 とうじ のアプリケーションソフト(Multiplan など)でメニュー選択 せんたく にスペースキーを使用 しよう していたためであった。また、プリンター では全角 ぜんかく スペースと半角 はんかく スペースの幅 はば の比 ひ が2対 たい 1でない場合 ばあい があるため、スペースの区別 くべつ は帳票 ちょうひょう 設計 せっけい に影響 えいきょう があった[7] 。
Shift_JISは ISO 2022の符号 ふごう 化 か の範囲 はんい 外 がい にあるベンダー独自 どくじ の実装 じっそう として誕生 たんじょう しており、普及 ふきゅう 後 ご もしばらく標準 ひょうじゅん 化 か されずにいたが、JIS X 0208:1997において附属 ふぞく 書 しょ 1で「シフト符号 ふごう 化 か 表現 ひょうげん 」という名前 なまえ で仕様 しよう が定義 ていぎ された。また、IANA においても「Shift_JIS」の名称 めいしょう が登録 とうろく されている[8] 。
JIS X 0208の拡張 かくちょう 規格 きかく であるJIS X 0213では、2000年 ねん 制定 せいてい 時 じ に附属 ふぞく 書 しょ 1で上位 じょうい 互換 ごかん 仕様 しよう のShift_JISX0213 が定 さだ められ、2004年 ねん 改定 かいてい 時 じ にShift_JIS-2004 と名称 めいしょう が変更 へんこう された。
その後 ご は更新 こうしん は停止 ていし したが、日本語 にほんご 版 ばん Windowsが長 なが らく標準 ひょうじゅん をShift_JISに定 さだ めていたことで使用 しよう され続 つづ けた。不都合 ふつごう が多 おお いためUnicode への移行 いこう が呼 よ びかけられている[9] 。
区点 くてん 番号 ばんごう の割当 わりあて
編集 へんしゅう
JIS X 0208 では文字 もじ 集合 しゅうごう が区点 くてん 番号 ばんごう として94×94の文字 もじ 表 ひょう の行 くだり と列 れつ の番号 ばんごう の組 くみ で表現 ひょうげん される。これら区点 くてん 番号 ばんごう をShift_JISでは以下 いか のような対応 たいおう で符号 ふごう 化 か している。
表 ひょう : 区点 くてん (第 だい 1面 めん )とShift_JIS符号 ふごう 化 か
Shift_JIS
第 だい 2バイト(16進 しん )
40
…
7E
80
…
9F
…
FC
第 だい 1バイト (16進 しん )
81
1区 く 1点 てん
1区 く 63点 てん
1区 く 64点 てん
2区 く 1点 てん
2区 く 94点 てん
⋮
9F
61区 く 1点 てん
61区 く 63点 てん
61区 く 64点 てん
62区 く 1点 てん
62区 く 94点 てん
E0
63区 く 1点 てん
63区 く 63点 てん
63区 く 64点 てん
64区 く 1点 てん
64区 く 94点 てん
⋮
EF
93区 く 1点 てん
93区 く 63点 てん
93区 く 64点 てん
94区 く 1点 てん
94区 く 94点 てん
JIS X 0213 では94×94の文字 もじ 表 ひょう が2つあり、それぞれ第 だい 1面 めん ・第 だい 2面 めん と表現 ひょうげん される。第 だい 1面 めん (第 だい 1・2・3水準 すいじゅん )は上記 じょうき 符号 ふごう 化 か の範囲 はんい に収 おさ まる。第 だい 2面 めん (第 だい 4水準 すいじゅん )は区 く 番号 ばんごう が1・3・4・5・8・12-15・78-94区 く と不連続 ふれんぞく に構成 こうせい されており、この26区分 くぶん を収録 しゅうろく するためにShift_JIS-2004では以下 いか のように対応 たいおう している。
表 ひょう : 区点 くてん (第 だい 2面 めん )とShift_JIS符号 ふごう 化 か
Shift_JIS
第 だい 2バイト(16進 しん )
40
…
7E
80
…
9F
…
FC
第 だい 1バイト (16進 しん )
F0
1区 く 1点 てん
1区 く 63点 てん
1区 く 64点 てん
8区 く 1点 てん
8区 く 94点 てん
F1
3区 く 1点 てん
3区 く 63点 てん
3区 く 64点 てん
4区 く 1点 てん
4区 く 94点 てん
F2
5区 く 1点 てん
5区 く 63点 てん
5区 く 64点 てん
12区 く 1点 てん
12区 く 94点 てん
F3
13区 く 1点 てん
13区 く 63点 てん
13区 く 64点 てん
14区 く 1点 てん
14区 く 94点 てん
F4
15区 く 1点 てん
15区 く 63点 てん
15区 く 64点 てん
78区 く 1点 てん
78区 く 94点 てん
F5
79区 く 1点 てん
79区 く 63点 てん
79区 く 64点 てん
80区 く 1点 てん
80区 く 94点 てん
⋮
FC
93区 く 1点 てん
93区 く 63点 てん
93区 く 64点 てん
94区 く 1点 てん
94区 く 94点 てん
区点 くてん 番号 ばんごう からの変換 へんかん
編集 へんしゅう
面 めん 区点 くてん 番号 ばんごう
m
,
k
,
t
{\displaystyle m,k,t}
から Shift_JISの 第 だい 1バイト
s
1
{\displaystyle s_{1}}
・第 だい 2バイト
s
2
{\displaystyle s_{2}}
は以下 いか の式 しき で求 もと められる[10] 。
⌊
x
⌋
{\displaystyle \lfloor x\rfloor }
は床 ゆか 関数 かんすう 。
s
1
=
{
⌊
k
+
257
2
⌋
if
m
=
1
and
1
≤
k
≤
62
⌊
k
+
385
2
⌋
if
m
=
1
and
63
≤
k
≤
94
⌊
k
+
479
2
⌋
−
⌊
k
8
⌋
×
3
if
m
=
2
and
k
=
1
,
3
,
4
,
5
,
8
,
12
,
13
,
14
,
15
⌊
k
+
411
2
⌋
if
m
=
2
and
78
≤
k
≤
94
{\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}}}
s
2
=
{
t
+
63
if
k
is odd and
1
≤
t
≤
63
t
+
64
if
k
is odd and
64
≤
t
≤
94
t
+
158
if
k
is even
{\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}}}
符号 ふごう 化 か 可能 かのう な文字数 もじすう
編集 へんしゅう
初期 しょき のShift_JISでは、第 だい 1バイトが47通 とお り、第 だい 2バイトが188通 とお りの符号 ふごう があるため、 47 × 188 = 94 × 94 = 8836 の2バイト文字 もじ を表現 ひょうげん することができ、これはJIS X 0208で規定 きてい された区点 くてん 番号 ばんごう のすべてを収 おさ められるように設計 せっけい されている。ここに158字 じ の英数字 えいすうじ ・半角 はんかく カナ(スペース含 ふく む、DEL除 のぞ く)を加 くわ えると、計 けい 8994 文字 もじ となる。
さらに、第 だい 1バイトはF016 -FC16 を用 もち いることで60通 とお りまで拡張 かくちょう されており、 60 × 188 + 158 = 11438 文字 もじ を表現 ひょうげん することができる。Microsoftコードページ932 のIBM拡張 かくちょう 文字 もじ やShift_JIS-2004の第 だい 4水準 すいじゅん 文字 もじ の符号 ふごう 化 か ではこれらの領域 りょういき を動員 どういん している。
利点 りてん
全角 ぜんかく 文字 もじ と、JIS X 0201で定義 ていぎ したいわゆる半角 はんかく カナ文字 もじ を同一 どういつ のコード体系 たいけい で表現 ひょうげん できる。
日本語 にほんご 環境 かんきょう においては、MS-DOSで日本語 にほんご 用 よう 文字 もじ コードとして採用 さいよう されて以来 いらい 、パソコンにおいて圧倒的 あっとうてき な普及 ふきゅう 度 ど があり、その他 た の文字 もじ 符号 ふごう 化 か 方式 ほうしき に比 くら べてデータ交換 こうかん 可能 かのう 性 せい が高 たか い。
UTF-8 などに比 くら べてサイズが小 ちい さい。UTF-8では半角 はんかく カナや漢字 かんじ の多 おお くは3バイトを要 よう する。
欠点 けってん
半角 はんかく カナのための領域 りょういき を確保 かくほ した関係 かんけい 上 じょう 、区点 くてん 番号 ばんごう と符号 ふごう の相互 そうご 演算 えんざん には前述 ぜんじゅつ のように煩雑 はんざつ な条件 じょうけん 分岐 ぶんき が必要 ひつよう である。
2バイト目 め に8016 未 み 満 まん (ASCII のコード領域 りょういき )が現 あらわ れる。このため、文字 もじ の区切 くぎ りの判定 はんてい に手間 てま がかかる。ファイルや電文 でんぶん の先頭 せんとう から文字 もじ コードの判定 はんてい をする場合 ばあい はよいが、後 うし ろから判定 はんてい をしようとすると、最悪 さいあく の場合 ばあい 、先頭 せんとう までたどらないといけないことがあるため、プログラムの作 つく り方 かた に工夫 くふう が必要 ひつよう になる。また、この領域 りょういき に含 ふく まれる一部 いちぶ の文字 もじ の扱 あつか いのため、マルチバイトのEUC-JP、UTF-8 などに比 くら べ、プログラミング上 じょう の扱 あつか いが難 むずか しい(次項 じこう を参照 さんしょう )。
JIS補助 ほじょ 漢字 かんじ が表現 ひょうげん できない。
文字 もじ 集合 しゅうごう については実装 じっそう ベンダがJIS X 0208で規定 きてい されていない機種 きしゅ 依存 いぞん の拡張 かくちょう を施 ほどこ していることが多 おお く、こういった拡張 かくちょう 部分 ぶぶん に関 かん してはデータ交換 こうかん 可能 かのう 性 せい が低 ひく い。特 とく に広 ひろ く普及 ふきゅう しているMicrosoftコードページ932 はJIS X 0213 で拡張 かくちょう されたShift_JIS-2004 と併用 へいよう できない。
2バイト目 め が5C等 とう になりうることによる問題 もんだい
編集 へんしゅう
表 ひょう : JIS X 0208で2バイト目 め に5C16 を持 も つ文字 もじ 一覧 いちらん
文字 もじ
符号 ふごう (16進 しん )
読 よ み・字義 じぎ
文字 もじ 化 ば け例 れい
―
815C
ダッシュ
ソ
835C
そ (片仮名 かたかな )
ソフト→ャtト
Ы
845C
ゥイ (キリル文字 もじ )
噂 うわさ
895C
ソン、うわさ
噂 うわさ 話 はなし →汚 けがれ b
浬 かいり
8A5C
リ、かいり 、ノット
欺
8B5C
ギ、あざむ-く
詐 いつわり 欺 師 し →詐 いつわり 去 さ t
圭 けい
8C5C
ケイ
錦織 にしきおり 圭 けい など→錦織 にしきおり 撃 げき ネど
構
8D5C
コウ、かま-える
構 成 しげる →告 つげ ャ
蚕 かいこ
8E5C
サン、かいこ
養 やしなえ 蚕 かいこ 業 ごう →養 よう 視 し ニ
十 じゅう
8F5C
ジュウ、とお (漢 かん 数字 すうじ の10)
十 じゅう 人 ひと 十 じゅう 色 いろ →署 しょ l署 しょ F
申 さる
905C
シン、もう-す、さる
申 さる 請→瑞 みず ソ、 申 さる 込 こ み→錐 きり 桙ン
曾
915C
ソ、ひ (「曽 そ 」の旧 きゅう 字 じ )
曾 孫 まご →荘 そう キ、 曾 祖父 そふ →荘 そう c父 ちち
箪
925C
タン (「簞」の簡易 かんい 慣用 かんよう 字体 じたい )
箪 笥 け →註y
貼 は
935C
チョウ、は-る
貼 は り付 つ け→唐 から 阨tけ
能 のう
945C
ノウ、よ-く、あた-う
能 のう 力 ちから →迫 さこ ヘ、 可 か 能 のう 性 せい →可 か 柏 かしわ ォ
表 ひょう
955C
ヒョウ、おもて、あらわ-す
表 ひょう 示 しめせ →侮 あなど ヲ、 代 だい 表 ひょう 的 てき →代 だい 蕪 かぶら I
暴
965C
ボウ、バク、あば-れる
暴 力 ちから →沫 あわ ヘ、 暴 露 ろ →迄 まで I
予 よ
975C
ヨ、あらかじ-め、かね-て
予 よ 算 さん →落Z、 予 よ 想 そう →卵 たまご z
禄 ろく
985C
ロク
元 もと 禄 ろく X年 とし →元 もと 蝋 ろう 年 ねん
兔 うさぎ
995C
ト、うさぎ (「兎 うさぎ 」の異体 いたい 字 じ )
喀
9A5C
カク、キャク、は-く
喀 血 ち する→嚮撃キる
媾
9B5C
コウ
媾 和 わ →尨 むくいぬ a (「講和 こうわ 」の非 ひ 書換 かきか え )
彌 わたる
9C5C
ミ、ビ、や (「弥 わたる 」の旧 きゅう 字 じ )
和泉 いずみ 元 もと 彌 わたる など→和泉 いずみ 元 もと 怩ネど
拿
9D5C
ダ
拿 捕 と する→摯゚する
杤
9E5C
とち (「栃 とち 」の異体 いたい 字 じ )
歃
9F5C
ソウ、ショウ、すす-る
血 ち を歃 って→血 ち を氓チて
濬
E05C
シュン、さら-う
長谷川 はせがわ 濬 など→長谷川 はせがわ 烽ネど
畚 ふご
E15C
ホン、ふご、もっこ
畚 ふご に乗 の る→痰 たん ノ乗 の る
秉
E25C
ヘイ、ヒン、と-る
秉 燭 しょく →竦C
綵
E35C
サイ、あや
動 どう 植 うえ 綵絵 →動 どう 植 うえ 繩 なわ G
臀 しり
E45C
デン、しり
臀 しり 部 ぶ など→苺 いちご 狽ネど
藹 しげる
E55C
アイ
和気 わき 藹 しげる 々→和気 わけ 蛛X
觸 さわ
E65C
ショク (「触 さわ 」の旧 きゅう 字 じ )
軆
E75C
タイ (「体 からだ 」の異体 いたい 字 じ )
鐔
E85C
タン、つば
金 きむ 鐔 焼 や き→金 きむ 闖トき
饅 まん
E95C
マン
饅 まん 頭 あたま →體 からだ ェ
鷭 ばん
EA5C
バン (鳥 とり の名 な )
鷭 ばん の群 む れ→黷フ群 む れ
Shift_JISでは、カタカナの「ソ」、漢字 かんじ の「噂 うわさ 」など一部 いちぶ の文字 もじ [11] の2バイト目 め に、5C16 を使用 しよう している。この符号 ふごう はJIS X 0201 では円 えん 記号 きごう 、ASCIIなどではバックスラッシュ に該当 がいとう し、多 おお くのプログラミング言語 げんご (C 、Perl 、Bourne Shell など多数 たすう )ではエスケープ文字 もじ と扱 あつか う。したがって、ソースコードや文字 もじ データの処理 しょり においてShift_JISを想定 そうてい していないプログラミング環境 かんきょう では問題 もんだい が起 お こる。この問題 もんだい は、同 おな じように2バイト目 め の範囲 はんい に5C16 を含 ふく むBig5 や、まれではあるがGBK などの文字 もじ コード でも発生 はっせい しうる。
また、5C16 以外 いがい についても類似 るいじ の問題 もんだい が発生 はっせい することがある。
2バイト目 め が7C16 になる文字 もじ (「ポ」「芸 げい 」など)。この符号 ふごう はASCIIでは|
(バーティカルバー )に該当 がいとう する。Unix やMS-DOSなどのシェル 上 うえ でこの符号 ふごう はパイプ記号 きごう と認識 にんしき され、これらの文字 もじ を含 ふく むファイルは正常 せいじょう に操作 そうさ できない。
2バイト目 め が5B16 (「ゼ」「深 ふかし 」など)、5D16 (「ゾ」「転 てん 」など)になる文字 もじ 。これらの符号 ふごう はASCIIでは[
, ]
に該当 がいとう する。そのためこれらの文字 もじ は正規 せいき 表現 ひょうげん と組 く み合 あ わせて使 つか うことができない。
このようなASCII約 やく 物 もの と同 おな じ符号 ふごう を含 ふく むためにプログラム上 じょう で不具合 ふぐあい を起 お こしうるマルチバイト文字 もじ を俗 ぞく に「だめ文字 もじ 」あるいは「ダメ文字 もじ 」と呼 よ ぶ[12] 。
この問題 もんだい を回避 かいひ する伝統 でんとう 的 てき な方法 ほうほう として、以下 いか のようなものがある。
ソースコード全体 ぜんたい をEUC-JP やUTF-8 などのGL領域 りょういき と混用 こんよう のない符号 ふごう に変換 へんかん し、実行 じっこう またはコンパイルする(例 れい :Perl のencodingプラグマ)。
5Cを含 ふく む文字 もじ 列 れつ を扱 あつか う場合 ばあい 、「ソ
」→「ソ\
」のようにダメ文字 もじ の直後 ちょくご にエスケープ文字 もじ を挿入 そうにゅう することで目的 もくてき の符号 ふごう 列 れつ として認識 にんしき させる(例 れい :Perl のSjisソフトウェア[13] やJavaScript )。
文字 もじ または文字 もじ 列 れつ として扱 あつか わず対象 たいしょう 文字 もじ および内部 ないぶ 表現 ひょうげん 形式 けいしき を数値 すうち の配列 はいれつ として変換 へんかん を行 おこな い、取 と り扱 あつか う際 さい に文字 もじ に復号 ふくごう して扱 あつか う(例 れい :PerlのEncodeモジュール[14] )。
文字 もじ 化 ば け例 れい
マルチバイト非 ひ 対応 たいおう 環境 かんきょう では、Shift_JISの「構 かま わない」という文字 もじ 列 れつ は「高 こう 墲ネい」[15] または「高 こう 筲ネい」[16] に文字 もじ 化 ば けすることがある。後 ご の文字 もじ の2バイト目 め が半角 はんかく カナ 「ネ」として認識 にんしき されるため、「い」でデコードが再 さい 同期 どうき され、後 ご の文字 もじ 列 れつ は正常 せいじょう に表示 ひょうじ される。
構
わ
な
い
8d
5c
82
ed
82
c8
82
a2
▼エスケープ文字 もじ にあたる5c が抜 ぬ けた場合 ばあい
8d
82
ed
82
c8
82
a2
高 こう
墲[15]
ネ
い
また、同様 どうよう に「芸能 げいのう 界 かい 」という文字 もじ 列 れつ は「芸 げい 矧 はぎ E」に文字 もじ 化 ば けする。
芸 げい
能 のう
界 さかい
8c
7c
94
5c
8A
45
▼エスケープ文字 もじ にあたる5c が抜 ぬ けた場合 ばあい
8C
7c
94
8A
45
芸 げい
矧 はぎ
E
Shift_JISの「シフト」とは、JIS X 0208の文字 もじ 集合 しゅうごう を分割 ぶんかつ したうえで8ビット符号 ふごう 空間 くうかん 内 ない に“ずらして配置 はいち ”して符号 ふごう 化 か していることを意味 いみ する。
他 た の符号 ふごう 化 か 方式 ほうしき においても、複数 ふくすう の文字 もじ 集合 しゅうごう をシフトコード で切 き り替 か える操作 そうさ を「シフト」と呼 よ ぶが、これとは異 こと なる。例 たと えば、ISO-2022-JP はエスケープシーケンス で漢字 かんじ と英数字 えいすうじ を切 き り替 か えることを、EUC-JP は補助 ほじょ 漢字 かんじ と半角 はんかく カナをシングルシフトで切 き り替 か えることを指 さ す。
また、ビット演算 えんざん の「ビットシフト 」とも関係 かんけい がない。
「MS_Kanji 」は、IANAによりShift_JISの別名 べつめい として割 わ り当 あ てられている[8] 。
「x-sjis 」は、IANAに「Shift_JIS」が登録 とうろく される以前 いぜん にNetscape Navigator 2.0において使 つか っていたエンコーディング の指定 してい 子 こ 名 めい である。HTML ドキュメントの「charset」の指定 してい にShift_JISの別名 べつめい として使 つか えるブラウザエンジン がある。