「Shift JIS」の版間の差分
削除された内容 追加された内容
→top: 「パソコン」に限った話でも、「ファイル内」に限った話でもないので |
音読みはカタカナ化 |
||
1行目:
{{記事名の制約|title=Shift_JIS}}
'''Shift_JIS'''(シフトジス)は、[[コンピュータ
{{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の標準化 ==
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}}を記述し、「
=== 例 ===
222行目:
Shift_JISの「[[シフト]]」とは、256×256の平面の中で文字を複雑に“ずらす”という意味の「シフト」である。
[[ISO-2022-JP]]は[[指示シーケンス]]で漢字と[[ラテン文字|アルファベット]]を切り替える符号化方式である。また、EUC-JPは[[補助漢字]]と半角カタカナを[[シングルシフト]]で一時的に切り替えて使う符号化方式である。これらの符号化方式で行われている、各文字集合の面を[[漢字シフトコード|シフトコード]]によって切り替える操作も「シフト」と呼ばれるが、Shift_JISの「シフト」はこれらとは異なる意味である。またビットをずらす操作([[ビットシフト]])とも異なる。
== Shift_JISと区点番号 ==
|