削除された内容 追加された内容
Cryosta (会話 | 投稿記録)
→‎top: 「パソコン」に限った話でも、「ファイル内」に限った話でもないので
音読みはカタカナ化
1行目:
{{記事名の制約|title=Shift_JIS}}
'''Shift_JIS'''(シフトジス)は、[[コンピュータ]]上で[[日本語]]を含む文字列を表現するために用いられる[[文字コード]]の一つ。かつてはベンダーによる独自拡張を含む文字コード群を指した[[曖昧|曖昧な名称]]であったが、現在は標準化文書[[JIS X 0208]]の附属書1で規定されている。「Shift_JIS」は[[IANA]]における登録名である<ref name="iana-charsets">
{{Cite web
|publisher=[[IANA]]
12行目:
 
== Shift_JISの誕生 ==
1980年代、[[ナルコンピュータ|パソコン]]用16ビットCPUの普及もあいまって、漢字や[[仮名]]<ref>「仮名」は[[万葉仮名]]など[[ひらがな]]と[[カタカナ]]以外もあるが、ここではひらがなとカタカナの2種類を指す。</ref>を表示可能なハードウェアを備えたパソコンが続々と発売された。そのため、日本語を表現できる[[文字符号化方式]]が模索されていた(Shift_JISを「シフトJISコード」と呼んで符号化文字集合(文字コード)の面のみを考える議論があるが、ここでは文字符号化方式の面に焦点を当てる)。
 
文字符号化方式Shift_JISの設計者らは、先行してよく利用されていたJIS C 6220(現在の[[JIS X 0201]])の8ビット符号(以下「英数字・[[半角カナ]]」)と、JIS C 6226(現在の[[JIS X 0208]]、以下「漢字」)の両文字集合を表現しようとした。また、ファイルの大きさや処理時間の短縮を図るため、[[エスケープシーケンス]]なしで混在可能にすることを企図した。
 
JIS C 6220とJIS C 6226の2つはともに、[[ISO/IEC 2022|ISO 2022]]で[[文字集合]]を切り替えて利用する設計があった。ISO 2022に基づく文字符号化方式では、英数字、[[半角カナ]]、漢字はそれぞれ、8ビット符号空間の中のGL/GRという領域の1つを(ただし漢字は2回)使うことで表現できる。もし英数字と漢字の2つをエスケープシーケンスなしで混在したいなら、英数字をGL、漢字をGRに割り当てる方法がある。[[EUC-JP]]は、おおよそそのように実装されている。
 
しかし、パソコンではすでに、JIS X 0201の8ビット符号、つまりGLに英数字、GRに1バイトカタカナ([[半角カタカナ]])を割り当てた符号が普及していた。英数字と1バイトカタカナの2つを動かすことは、文字化けの原因になるため避ける必要があった。そのため、ISO 2022の枠内の領域に漢字を混在させることは困難だった。
 
1982年、漢字の符号位置を複雑に移動(シフト)し、符号空間の隙間に押し込むShift_JISが誕生した。これを実現するためには、漢字の1バイト目として、ISO 2022におけるGR({{十六進|A1}}-{{十六進|FE}})領域に3分の1残していた未使用領域に加え、ISO 2022において不使用のCR({{十六進|80}}-{{十六進|9f}})領域を使用することとした。さらに2バイト目には、ISO 2022とは異なり、英数字・半角カナに使用済みの領域をも含む、GL、CR、GRにあたる各領域のほぼ全てを使う必要があった。ただし、GL({{十六進|21}}-{{十六進|7E}})領域においては、JIS X 0201の記号に当たる部分は極力避けた。
 
[[マイクロソフト]]日本法人元会長の[[古川享]]によると、Shift_JISの制定には[[アスキー (企業)|アスキー]]、マイクロソフト(米)、[[三菱電機]]、[[マイクロソフトウェア・アソシエイツ]]、[[デジタルリサーチ]](米)が関わり、特にアスキーの[[山下良蔵]]が中心となって行われたという<ref>古川享 「[http://furukawablog.spaces.live.com/Blog/cns!1pmWgsL289nm7Shn7cS0jHzA!2225.entry 私のマイコン遍歴、日本のパソコン30年史、その1]」の2005年12月28日のコメント 『[http://furukawablog.spaces.live.com/ 古川享ブログ]』 2005年12月28日{{リンク切れ|date=2012年4月}}</ref>。これに対する異説として、[[京都大学]]助教授の[[安岡孝一]]は、マイクロソフトウェア・アソシエイツと三菱電機のみの共同開発だと主張していたが<ref>安岡孝一 「[http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/ISCIE2001.pdf 日本における最新文字コード事情]」『システム/制御/情報』、Vol. 45, [http://www.iscie.or.jp/j/?%E3%80%8C%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%2F%E5%88%B6%E5%BE%A1%2F%E6%83%85%E5%A0%B1%E3%80%8D%E7%AC%AC45%E5%B7%BB#na671586 No. 9], pp. 528–535, 2001<br/>安岡孝一 「[http://slashdot.jp/~yasuoka/journal/334730 シフトJISの誕生]」 2005年12月22日<br/>安岡孝一 「[http://slashdot.jp/comments.pl?sid=292835&cid=857031 Re:古川享さんがシフトJIS誕生について書いています]」 2005年12月29日<br/>安岡孝一、安岡素子『文字符号の歴史 欧米と日本編』共立出版 2006年2月 ISBN 978-4-320-12102-7</ref>、山下本人の発言<ref>山下良蔵 「[http://furukawablog.spaces.live.com/Blog/cns!1pmWgsL289nm7Shn7cS0jHzA!2225.entry 私のマイコン遍歴、日本のパソコン30年史、その1]」の2006年9月21日のコメント 『[http://furukawablog.spaces.live.com/ 古川享ブログ]』 2006年9月21日</ref>により安岡は自説を撤回する発言をしている<ref>安岡孝一「[http://slashdot.jp/comments.pl?sid=292835&cid=1028873 Re:古川享さんがシフトJIS誕生について書いています]」 2006年09{{0}}9月29日</ref>。また古くは''{{en|Life with UNIX}}''の訳書 (ISBN 4-7561-0783-4) の「UNIX人名事典」翻訳版加筆部分 (p. 45) で、[[深瀬弘恭]]に「MS漢字コードの作者の一人」という紹介文が書かれていた。
 
== Shift_JISの標準化 ==
62行目:
| 浬 || 8A5C || style="text-align:left;" | [[海里]]。
|-
| 欺 || 8B5C || style="text-align:left;" | ギ、あざむ。詐'''欺'''
|-
| 圭 || 8C5C || style="text-align:left;" | けいケイ。人名。
|-
| 構 || 8D5C || style="text-align:left;" | コウ、かまえる。'''構'''造
|-
| 蚕 || 8E5C || style="text-align:left;" | サン、[[カイコ|かいこ]]。養'''蚕'''
|-
| 十 || 8F5C || style="text-align:left;" | [[漢数字]]の10。
|-
| 申 || 905C || style="text-align:left;" | シン、もう、しん、[[干支|さる]]。'''申'''請
|-
| 曾 || 915C || style="text-align:left;" | 、ひ。「曽」の印刷標準字体(正字体)。'''曾'''孫
|-
| 箪 || 925C || style="text-align:left;" | たんタン。'''箪'''笥、瓢'''箪'''
|-
| 貼 || 935C || style="text-align:left;" | チョウ、。'''貼'''付
|-
| 能 || 945C || style="text-align:left;" | のうノウ、よ(く)。'''能'''力
|-
| 表 || 955C || style="text-align:left;" | ヒョウ、あらわ、ひょう。'''表'''現
|-
| 暴 || 965C || style="text-align:left;" | ボウ、あばれる、あば、ぼう。'''暴'''力
|-
| 予 || 975C || style="text-align:left;" | ヨ、あらかじ、よ。'''予'''備
|-
| 禄 || 985C || style="text-align:left;" | ろくロク。俸'''禄'''
|-
| 兔 || 995C || style="text-align:left;" | [[ウサギ|うさぎ]]。「兎」の異体字
|-
| 喀 || 9A5C || style="text-align:left;" | かくキャク。'''喀'''血
|-
| 媾 || 9B5C || style="text-align:left;" | こうコウ。'''媾'''和(講和の非書換え)
|-
| 彌 || 9C5C || style="text-align:left;" | ミ([[呉音|呉]])ビ([[漢音|漢]])。弥生の「弥」の正字体。人名などに多く使われる。([[和泉元彌]]など)
|-
| 拿 || 9D5C || style="text-align:left;" | 。'''拿'''捕
|-
| 杤 || 9E5C || style="text-align:left;" | [[栃]]の別体
|-
| 歃 || 9F5C || style="text-align:left;" | ソウ(呉)、ショウ(漢)、すす、そう、しょう
|-
| 濬 || E05C || style="text-align:left;" | シュン、さら、しゅん
|-
| 畚 || E15C || style="text-align:left;" | ホン、ふご、ほん
|-
| 秉 || E25C || style="text-align:left;" | ヘイ、、へい。「兼」の字源とする漢字<!--諸説あり-->
|-
| 綵 || E35C || style="text-align:left;" | サイ、あや、さい
|-
| 臀 || E45C || style="text-align:left;" | でんデン、しり。'''臀'''部
|-
| 藹 || E55C || style="text-align:left;" | あいアイ。和気'''藹'''々
|-
| 觸 || E65C || style="text-align:left;" | ショク。[[触]]の旧字体
|-
| 軆 || E75C || style="text-align:left;" | [[体]]の古字
122行目:
| 鐔 || E85C || style="text-align:left;" | つば。刀の'''鐔'''(鍔)。
|-
| 饅 || E95C || style="text-align:left;" | まんマン。'''饅'''頭
|-
| 鷭 || EA5C || style="text-align:left;" | [[バン (鳥類)|バン]]。鳥の名。
|-
| {{JIS2004フォント|偆}} || ED5C<ref name="CP932">Windows環境 (CP932) で該当。</ref> || style="text-align:left;" | しゅんシュン
|-
| {{JIS2004フォント|砡}} || EE5C<ref name="CP932"/> || style="text-align:left;" | ぎょくギョク
|-
| {{JIS2004フォント|纊}} || FA5C<ref name="CP932"/> || style="text-align:left;" | コウ、わた、こう
|-
| {{JIS2004フォント|犾}} || FB5C<ref name="CP932"/> || style="text-align:left;" | ぎんギン
|}
Shift_JISでは、カタカナの「ソ」、漢字の「噂」など一部の文字の2バイト目に、{{十六進|5C}}(Shift_JISでは[[円記号]]、ASCIIなどでは[[バックスラッシュ]])を使用している。多くのプログラミング言語([[C言語|C]]、[[Perl]]、[[Bourne Shell]]など多数)では、この{{十六進|5C}}をエスケープ文字としている。したがって、ソースコードや文字データの処理においてShift_JISを想定していないプログラミング環境では問題が起こる。この問題は、同じように2バイト目の範囲に{{十六進|5C}}を含む[[Big5]]や、まれではあるが[[GBK]]などの[[文字コード]]でも発生しうる。
149行目:
}}</ref>。
 
この問題を回避する伝統的な方法として、ソースコード全体を[[EUC-JP|EUCコード]]やUTF-8などに変換してからコンパイルしたり実行したりする方法がある(例:Perl のencodingプラグマ)。あるいは「ソ」→「ソ\」のように、2バイト目の直後にエスケープ文字の{{十六進|5C}}を記述し、「だめダメ文字」を文字として正しく認識させる方法もある(例: [[Perl]] の[http://search.cpan.org/dist/Char-Sjis/ Sjisソフトウェア]や[[JavaScript]])。あるいは文字または文字列として扱わず対象文字および内部表現形式を数値の配列として変換を行い、取り扱う際に文字に復号して扱う方法もある(例:[[Perl]] の[http://search.cpan.org/dist/Encode/ Encodeモジュール])。
 
=== 例 ===
222行目:
Shift_JISの「[[シフト]]」とは、256×256の平面の中で文字を複雑に“ずらす”という意味の「シフト」である。
 
[[ISO-2022-JP]]は[[指示シーケンス]]で漢字と[[ラテン文字|アルファベット]]を切り替える符号化方式である。また、EUC-JPは[[補助漢字]]と半角カタカナを[[シングルシフト]]で一時的に切り替えて使う符号化方式である。これらの符号化方式で行われている、各文字集合の面を[[漢字シフトコード|シフトコード]]によって切り替える操作も「シフト」と呼ばれるが、Shift_JISの「シフト」はこれらとは異なる意味である。またビットをずらす操作([[ビットシフト]])とも異なる。
 
== Shift_JISと区点番号 ==