Shift_JISJIS[1]

1997JIS X 0208

構造

編集

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の誕生

編集

198016CPUJIS C 6220JIS X 02018JIS C 6226JIS X 0208ISO 2022

Shift_JIS ISO 20228GL(2116-7E16)GR(A116-FE16)1使GLGR[2]GLGRGLGR

1982Shift_JIS1ISO 2022使CR8016-9F16GR31使2ISO 2022使GLCRGR使GLJIS X 0201

Shift_JIS[3][4][5][6]Life with UNIX (ISBN 4-7561-0783-4) UNIX (p.45) MS

初期の実装

編集

Shift_JISMS-DOSMSMicrosoft932CP/M-86SJC-26MS-DOS814016CP/M-862202016CP/M-86MS-DOS21Multiplan使21[7]

標準化

編集

Shift_JIS ISO 2022JIS X 0208:19971IANAShift_JIS[8]

JIS X 0208JIS X 021320001Shift_JISX02132004Shift_JIS-2004

WindowsShift_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 021394×942121(123)2(4)1345812-1578-9426Shift_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点

区点番号からの変換

編集

面区点番号   から Shift_JISの 第1バイト ・第2バイト は以下の式で求められる[10] 床関数

 
 

符号化可能な文字数

編集

Shift_JIS1472188 47 × 188 = 94 × 94 = 8836 2JIS X 0208158DEL 8994 

1F016-FC1660 60 × 188 + 158 = 11438 Microsoft932IBMShift_JIS-20044

特徴

編集




(一)JIS X 0201

(二)MS-DOS

(三)UTF-8UTF-83




(一)

(二)28016ASCIIEUC-JPUTF-8

(三)JIS

(四)JIS X 0208Microsoft932JIS X 0213Shift_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]25C16使JIS X 0201ASCIICPerlBourne ShellShift_JIS25C16Big5GBK

5C16

27C16ASCII|UnixMS-DOS

25B165D16ASCII[, ]使

ASCII[12]



EUC-JPUTF-8GLPerl encoding

5C\PerlSjis[13]JavaScript

PerlEncode[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_KanjiIANAShift_JIS[8]

x-sjisIANAShift_JISNetscape Navigator 2.0使HTMLcharsetShift_JIS使

脚注

編集


(一)^ XML [JISShift_JIS]. @IT. 2021111

(二)^ EUC-JP

(三)^  30120051228  20051228

(四)^  //Vol. 45, No. 9, pp. 528535, 2001
 JIS 20051222
 Re:JIS 20051229
  20062 ISBN 978-4-320-12102-7

(五)^  3012006921  2006921

(六)^ Re:JIS 20060929

(七)^ 西UnixMS-DOS2.0 19831219pp.165-190

(八)^ abCHARACTER SETS. IANA. 201174

(九)^ 使 UnicodeMicrosoft -  - 

(十)^ JIS X 0213 § Shift_JIS-2004. 2019427 Hexadecimal numbers in the source have been converted to decimal for display.

(11)^ 29

(12)^ OSS   (2009710). Linux LinuxShift JIS . 20181016

(13)^ Char-Sjis-1.08 - Native Encoding Support by Traditional Scripting - metacpan.org

(14)^ Encode-3.00 - character encodings in Perl - metacpan.org

(15)^ abMicrosoft932

(16)^ Shift_JIS-2004

関連項目

編集