New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Shift JIS - Wikipedia

Shift JIS

出典: フリー百科事典『ウィキペディア(Wikipedia)』

本来の表記は「Shift_JIS」です。この記事に付けられた題名は記事名の制約から不正確なものとなっています。

Shift_JISIANAへの登録名。読み方は『シフトジス』)は、現在多くのパソコン上で日本語を表すために使われている文字コードである。当初はベンダ独自のコード系だったが、現在は標準化されてJIS X 0208の附属書1で規定されている。

Microsoft等の各ベンダが実装するShift_JISの亜種については『Microsoftコードページ932』を参照されたい。

目次

[編集] Shift_JISの誕生

1980年代、パソコン用16ビットCPUの普及もあいまって、漢字を表示可能なハードウェアを備えたパソコンが続々と発売された[1]。そのため、これらパソコン用の文字符号化方式が模索された。

この文字符号化方式には、先行してよく利用されるJIS C 6220(現在のJIS X 0201)の8ビット符号(以下「英数字・半角カナ」)と、JIS C 6226(現在のJIS X 0208、以下「漢字」)の両文字集合を、エスケープシーケンス無しで混在可能にすることが求められていた。

この2つはともに、ISO-2022で切り替える文字集合の1つとして設計されていた。ISO-2022にもとづく文字符号化方式では、英数字、半角カナ、漢字はそれぞれ、8ビット符号空間の中のGL/GRという領域の1つを(ただし漢字は2回)使うことで表現できる。それゆえ、もし英数字と漢字の2つをエスケープシーケンスなしで混在させたいなら、英数字をGL、漢字をGRに割り当てればいい。事実、EUC-JPはそのように実装されている[2]

しかし、パソコンではすでに、JIS X 0201の8ビット符号、つまり、GLに英数字、GRに半角カタカナを割り当てることが普及していたため、この2つは動かせなかった。ISO-2022の枠内では、これにさらに漢字を混在させることは不可能だった。

1982年、漢字の符号点を複雑に移動(シフト)させ、符号空間の隙間に押し込むShift_JISが誕生した。これを実現するためには、漢字の1バイト目として、ISO-2022におけるGR(0xA1~0xFE)領域に3分の1残されていた未使用領域にくわえ、ISO-2022において非使用のCR(0x80~0x9f)領域を使用することとした。ただし、GL(0x21~0xFE)領域においては、JIS X 0201の記号に当たる部分は極力避けた[3]。さらに2バイト目には、英数字・半角カナに使用済みの領域をも含む、GL、CR、GRにあたる各領域のほぼ全てを使う必要があった[4]

マイクロソフト(日本法人)元会長の古川享によると、Shift_JISの制定には、アスキーマイクロソフト(米)、三菱電機、マイクロソフトウェア・アソシエイツ、デジタル・リサーチ(米)が関わり、特にアスキーの山下良蔵が中心となって作成されたものだという。これに対する異説として、京都大学助教授の安岡孝一は、マイクロソフトウェア・アソシエイツと三菱電機のみの共同開発だと主張している。

[編集] Shift_JISと標準化

前述のとおり、Shift_JISは、もともとJISの正式な規格として誕生したわけではない。それゆえ、JISの文字集合を利用しながら、ISO-2022の符号化の方針にも沿っていない。

しかしながら、現在では、JIS X 0208:1997の附属書1にて「シフト符号化表現」という名前で、仕様が定義されている。これは、デファクトスタンダードとしての符号化方式が、日本工業標準調査会 (JISC) によって追認されたということを意味している。

JIS X 0208の拡張規格であるJIS X 0213においては、2000年制定の初版で付属書1としてShift_JISX0213を定め、2004年改正時の10文字追加に伴い、Shift_JIS-2004というものをあわせて定義している。

IANAにも「Shift_JIS」という名前で登録されている。

[編集] 利点と欠点

[編集] 利点

  1. 全角文字と、JIS X 0201で定義されたいわゆる半角カナ文字を同一のコード体系で表現できる。
  2. 日本においては、MS-DOSに搭載されて以来、パソコンにおいて圧倒的な普及度があり、その他の文字符号化方式に比べてデータ交換可能性が高い[5]

[編集] 欠点

  1. 半角カナのための領域を確保した関係上、コードシークエンスが区点番号の「区」の区切りではない箇所で分断されている。このため、コード番号を演算で求める際は煩雑な処理が必要である。
  2. 2バイト目に0x80未満(ASCII文字のコード領域)が現れる。このため、文字の区切りの判定に手間がかかり、EUC-JPよりプログラミング上の扱いが難しい。→次項
  3. JIS補助漢字を表現できない[6]

[編集] 2バイト目が0x5C等に成りうることによる問題

Shift_JISでは、「ソ」「噂」など一部の字の2バイト目が0x5C(日本語環境では¥記号、英語環境ではバックスラッシュ)にあたり、この0x5Cが多くのプログラミング言語においてエスケープシーケンスとして認識されてしまう。初期のMS-DOSJavaScriptCGI処理などでこの問題が起こる。この問題は、同じように2バイト目の範囲に0x5Cを含むBig5や、(まれではあるが)GBKなどの文字コードでも発生しうる。また、0x5C以外についても類似の問題が発生することがある。

現在でも、CGI処理や英語圏のソフトウェアをShift_JIS環境で使用すると、改行などの動作やファイル名などにしばしばこの問題がつきまとう。この不具合を招く、2バイト目に0x5Cを持つ文字のことを、俗にダメ文字と呼び、この中には「ソ」「構」「能」「表」など一般に使用頻度の高い文字も多い。

CGI処理については、この問題を回避する伝統的な方法として、HTMLソース全体をEUCコードUTF-8などに変換してからウェブサーバに置かれることが多いが、最近では、Perl等のスクリプト言語が正式にShift JISに対応するようになったため、それほど問題ではなくなってきている。

[編集] 2バイト目に0x5Cを持つ文字(いわゆる「ダメ文字」)一覧

文字 文字コード 読み・意味
0x815c ダッシュ
0x835c カタカナの「そ」
Ы 0x845c ロシア文字のウィ
0x875c Windows環境ではローマ数字の9
Mac環境ではGB(ギガバイト)
0x895c うわさ。
0x8a5c 海里
0x8b5c あざむく。詐
0x8c5c けい。人名。
0x8d5c かまえる。
0x8e5c カイコ。養
0x8f5c 漢数字の10。
0x905c もうす、しん。
0x915c そ、ひ。「曽」の異体字。
0x925c たん。
0x935c はる。
0x945c のう。
0x955c あらわす、ひょう。
0x965c あばれる、ぼう。
0x975c あらかじめ、よ。
0x985c ろく。俸
0x995c と、うさぎ。「兎」の異体字
0x9a5c かく。
0x9b5c こう。和(講和の非書換え)
0x9c5c や。弥生の「弥」の旧字体
0x9d5c だ。
0x9e5c 栃の別体
0x9f5c すする、そう、しょう。
0xe05c さらう、しゅん。
0xe15c ふご、ほん。
0xe25c とる、へい。
0xe35c あや、さい。
0xe45c でん、しり。
0xe55c あい。
0xe65c 触の旧字体
0xe75c 体の古字
0xe85c つば。刀の(鍔)。
0xe95c まん。
0xea5c バン。鳥の名。
0xed5c しゅん。
0xee5c ぎょく。
0xfa5c わた、こう。
0xfb5c ぎん。

[編集] コード空間における文字数制限

Shift_JISの2バイトコードの空間は、第1バイトが0x81~0x9Fならびに0xE0~0xFC、第2バイトが0x40~0x7Eならびに0x80~0xFCである。したがって、60×188=11280文字、さらに1バイトコードが158文字 (スペースを含み、DELは数えず) であるため、計11438文字となる。

なお、Shift_JIS-2004では、2バイト文字が11233文字、1バイト文字が158文字のため、合計11391文字を使用している。

[編集] Shift_JISにおける「シフト」とは

ISO-2022-JPは指示シーケンスで漢字とアルファベットを切り替える符号化方式である。また、EUC-JP補助漢字と半角カタカナをシングルシフトで一時的に切り替えて使う符号化方式である。これらの符号化方式では、各文字集合の面をシフトコードによって切り替え(シフトし)ている。

しかしながら、Shift_JISの『シフト』とはこの意味でのシフトではない。また、ビットシフトの『シフト』でもない。この『シフト』とは、256×256の平面の中で文字を複雑に"ずらす"という意味の『シフト』なのである。

[編集] Shift_JISと区点番号

Shift_JISが符号化の対象にする文字セットは、JIS X 0208である。この符号化文字集合には、区点番号という概念が存在する。これは、94×94の文字表の行と列の番号の組である。

Shift_JISでは、0x8140~0xFCFCというように、JIS X 0208とはまったく違ったコード体系であるが、JIS X 0208を計算により変形したものであるため、区点番号を用いて文字のコードポイントを指し示すことが多い。内容については、JIS X 0208の1~94区と同じである。ただし、機種依存文字では、シフトJISの符号空間から逆成し、94区の下方にあたかも120区までが拡張されているかのように扱うことがある。95区以上は、ISO/IEC 2022に則ったJIS X 0208の構造では存在し得ないので、本来はおかしい。ベンダ独自の非公式な概念である。なお、JIS X 0213の規格の一部であるShift_JISX0213符号化表現においては、第1バイト0xF0以降を2面の文字に割り当てており、百何区というような存在しない区番号は登場しない。

[編集] 「x-sjis」と「MS_Kanji」

「x-sjis」と「MS_Kanji」はともに、HTMLドキュメントの「charset」の指定に「Shift_JIS」の別名として使うことが出来る。

「x-sjis」はIANAに「Shift_JIS」という名前が登録される前に、Netscape Navigator 2.0において使われたエンコーディングの指定子名である。一部のHTML生成ソフトが自動でこの指定子を組み込んだため、多く使われている。そのため大抵のブラウザで認識可能であるが、「Shift_JIS」に書き換えることが推奨される。

[編集] 脚注

  1. ^ 16ビット機に限らず、8ビット機でも漢字VRAMを持つX1turboやMZ-2500ではPC-9801と同様に漢字処理が可能だった。
  2. ^ 厳密にはEUC-JPで利用する半角英数字は、JIS X 0201の英数字ではなくASCIIである。
  3. ^ 0x5Cを避けなかったことがバグの温床となった。
  4. ^ ちなみにISO-2022では、2バイト目に使える領域は1バイト目と同じである。
  5. ^ 実装ベンダが機種依存の拡張を施して利用いることが多い点には注意が必要。
  6. ^ 利用されていないコードポイントに強引に文字追加することで非公式ながら実現可能という意見もあるが、過去にこれを行なった例は存在しない。

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu