|
Article on other languages:
|
Shift_JIS(IANAへの登録名。読み方は『シフトジス』)は、現在多くのパソコン上で日本語を表すために使われている文字コードである。独自のコードを使っていた会社があったが、現在は標準化しているJIS X 0208の附属書1で規定している。 Microsoft等の各ベンダが実装するShift_JISの亜種については『Microsoftコードページ932』を参照。Mac OSが実装する亜種については『MacJapanese』を参照。
Shift_JISの誕生1980年代、パソコン用16ビットCPUの普及もあいまって、漢字を表示可能なハードウェアを備えたパソコンが続々と発売された。そのため、これらパソコン用の文字符号化方式を模索していた。 Shift_JISを「シフトJISコード」と呼んで符号化文字集合(文字コード)の面のみを考える議論があるが、ここでは文字符号化方式の面に焦点を当てる。 この文字符号化方式には、先行してよく利用していたJIS C 6220(現在のJIS X 0201)の8ビット符号(以下「英数字・半角カナ」)と、JIS C 6226(現在のJIS X 0208、以下「漢字」)の両文字集合を、表現しようとした。ファイルの大きさ、処理時間の短縮を図るためエスケープシーケンスなしで混在可能にすることを考案した。 JIS C 6220とJIS C 6226の2つはともに、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(A116-FE16)領域に3分の1残していた未使用領域にくわえ、ISO 2022において非使用のCR(8016-9F16)領域を使用することとした。ただし、GL(2116-7E16)領域においては、JIS X 0201の記号に当たる部分は極力避けた。さらに2バイト目にはISO 2022とは異なり、英数字・半角カナに使用済みの領域をも含む、GL、CR、GRにあたる各領域のほぼ全てを使う必要があった。 マイクロソフト(日本法人)元会長の古川享によると、Shift_JISの制定には、アスキー、マイクロソフト(米)、三菱電機、マイクロソフトウェア・アソシエイツ、デジタルリサーチ(米)が関わり、特にアスキーの山下良蔵が中心となって作成したものだという。これに対する異説として、京都大学助教授の安岡孝一は、マイクロソフトウェア・アソシエイツと三菱電機のみの共同開発だと主張している。 Shift_JISの標準化Shift_JISは、符号化文字集合とその文字符号化方式の両方を含む現実の問題を解決するための技術である。それゆえ、JIS X 0208の文字集合を利用してはいるものの、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」という名前で登録している。 利点と欠点利点
欠点
2バイト目が5C等に成りうることによる問題
Shift_JISでは、「ソ」「噂」など一部の字の2バイト目に、5C16(Shift_JISでは¥記号、ASCIIなどではバックスラッシュ)を使用している。多くのプログラミング言語 (C、Perl、Bourne Shellなど多数) では、この5C16をエスケープ文字としている。したがって、ソースコードや文字データの処理においてShift_JISを想定していないプログラミング環境では問題が起こる。この問題は、同じように2バイト目の範囲に5C16を含むBig5や、まれではあるがGBKなどの文字コードでも発生しうる。 また、5C16以外についても類似の問題が発生することがある。たとえば、UnixやMS-DOSなどのシェル上で7C16 (Shift_JISやASCIIではバーティカルバー) を含む文字(-、ポ、л、榎、掛、弓、芸、……)をファイル名に使用しようとすると、パイプ記号と認識され、正常にファイルが作成されなかったり、読み込みが不良になったりすることがある。 現在でも、シングルバイト文字コード対応のソフトウェアをShift_JIS環境で使用すると、改行などの動作やファイル名の処理などにしばしばこの問題がつきまとう。この不具合を招く、2バイト目に5C16を持つ文字のことを、だめ文字と呼び、この中には「ソ」「構」「能」「表」など一般に使用頻度の高い文字もある[1]。 この問題を回避する伝統的な方法として、ソースコード全体をEUCコードやUTF-8などに変換してからコンパイルしたり実行したりする方法がある。あるいは「ソ\」のように2バイト目の直前にエスケープ文字の5C16を記述し、だめ文字を文字として正しく認識させるなどの方法もある(Perl のSjisソフトウェアなど)。最近では、多くのプログラミング言語がShift_JISに対応するようになったため、Shift_JISを含むソースコードやデータを扱ってもこの問題は起きなくなったが、旧来のソフトウェア資産を利用する上では依然、問題がつきまとう。 コード空間における文字数制限Shift_JISの2バイトコードの空間は、第1バイトが8116-9F16ならびにE016-FC16、第2バイトが4016-7E16ならびに8016-FC16である。したがって、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では、814016-FCFC16というように、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バイトF016以降を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」に書き換えることを推奨している。 脚注 |
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net