Shift JISのソースを表示
←
Shift JIS
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{DISPLAYTITLE:Shift_JIS}} '''Shift_JIS'''(シフトジス)は、[[コンピュータ]]上で[[日本語]]を含む[[文字列]]を表現するために用いられる[[文字コード]]の一つ。'''シフトJIS'''(シフトジス)と表記されることもある<ref>{{Cite web|和書| url=https://www.atmarkit.co.jp/aig/01xml/shiftjis.html| title=XML用語事典 [シフトJIS(Shift_JIS)]| work=[[@IT]] | accessdate=2021-01-11}}</ref>。 かつては[[ベンダー]]による独自拡張を含む文字コード群を指した曖昧な名称であったが、1997年に[[JIS X 0208]]で標準化された。 {{For2|[[マイクロソフト]]などの各ベンダーが実装するShift_JISの亜種|Microsoftコードページ932|[[Mac OS]]が実装する亜種|MacJapanese}} == 構造 == [[JIS X 0201]]を1バイトで、[[JIS X 0208]]を2[[バイト (情報)|バイト]]で符号化する可変幅文字符号化方式。2バイト文字は、第1バイトに{{十六進|81}}-{{十六進|9F}}または{{十六進|E0}}-{{十六進|EF}}の47通り、第2バイトに{{十六進|40}}-{{十六進|7E}}または{{十六進|80}}-{{十六進|FC}}の188通りを用いる。 {{Shift_JISの符号表}} <!-- 【これはJIS X 0208の説明】 ただし、9区(8540<sub>16</sub>)から15区(889E<sub>16</sub>)まで、および85区(EB40<sub>16</sub>)から94区(EFFC<sub>16</sub>)まではJIS X 0208で空き領域とされており、文字は割り当てられていない。 --> さらに、[[JIS X 0213]]に拡張した[[Shift_JIS-2004]]では、第1バイトの{{font color||#bff|未使用}}領域である{{十六進|F0}}-{{十六進|FC}}を利用している。 {{Shift JIS拡張の符号表}} == 歴史 == === Shift_JISの誕生 === [[1980年代]]、[[パーソナルコンピュータ|パソコン]]用[[16ビット]][[CPU]]の普及もあいまって、[[漢字]]や[[ひらがな]]・[[カタカナ]]を表示可能な[[ハードウェア]]を備えた情報機器が続々と発売された。これらの製品では、日本語を表現できる[[文字符号化方式]]が模索されており、先行してJIS C 6220(現在の[[JIS X 0201]])の[[8ビット]]符号(以下「[[英数字]]・[[半角カナ]]」)と、JIS C 6226(現在の[[JIS X 0208]]、以下「漢字」)がよく利用されていた。この両文字集合の混在にあたっては、[[ISO/IEC 2022|ISO 2022]]による[[エスケープシーケンス]]で[[文字集合]]を切り替える設計となっていた。 Shift_JISの設計では、ファイルサイズ節約や処理時間短縮を図るため、これら文字集合をエスケープシーケンスなしで混在可能にすることを企図した。 ISO 2022では、英数字・半角カナ・漢字はそれぞれ、8ビット符号空間の中のGL({{十六進|21}}-{{十六進|7E}})・GR({{十六進|A1}}-{{十六進|FE}})のいずれか1領域を使うことで表現する。このうち英数字・漢字だけの混在であれば英数字をGL、漢字をGRに割り当てることもできる<ref>[[EUC-JP]]はおおよそそのように実装されており、半角カナの表現には切替が必要。</ref>が、既にGLに英数字、GRに半角カナを割り当てた実装が普及しており、既存のGL・GR領域に漢字を混在させることは困難だった。 [[1982年]]、漢字の[[符号点|符号位置]]をこれら符号空間の隙間に押し込む形でShift_JISが実装された。これを実現するためには、漢字の1バイト目として、ISO 2022において不使用のCR({{十六進|80}}-{{十六進|9F}})領域に加え、半角カナに割り当てられていたGR領域に約3分の1残されていた未使用領域から捻出することとした。さらに2バイト目には、ISO 2022とは異なり、英数字・半角カナに使用済みの領域をも含む、GL、CR、GRにあたる各領域のほぼ全てを使う必要があった。ただし、GL領域においては、JIS X 0201の記号に当たる部分は極力避けた。 [[マイクロソフト]]日本法人元会長の[[古川享]]によると、Shift_JISの制定には[[アスキー (企業)|アスキー]]、マイクロソフト(米)、[[三菱電機]]、[[マイクロソフトウェア・アソシエイツ]]、[[デジタルリサーチ]](米)が関わり、特にアスキーの[[山下良蔵]]が中心となって行われたという<ref>古川享 「[https://web.archive.org/web/20061105073147/http://furukawablog.spaces.live.com/Blog/cns!1pmWgsL289nm7Shn7cS0jHzA!2225.entry 私のマイコン遍歴、日本のパソコン30年史、その1]」の2005年12月28日のコメント 『古川享ブログ』 2005年12月28日</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年{{0}}9月29日</ref>。また古くは''{{en|Life with UNIX}}''の訳書 (ISBN 4-7561-0783-4) の「UNIX人名事典」翻訳版加筆部分 (p.45) で、[[深瀬弘恭]]に「MS漢字コードの作者の一人」という紹介文が書かれていた。 === 初期の実装 === Shift_JISはマイクロソフトの[[MS-DOS]]に「MS漢字コード」(および後の[[Microsoftコードページ932]])、デジタルリサーチの[[CP/M-86]]に「SJC-26」として採用された。両者はほぼ同じだが、[[全角スペース]]の扱いに違いがある。全角スペースにMS-DOSは{{十六進|8140}}を割り当てているが、CP/M-86は半角スペース2文字分と同等の{{十六進|2020}}を割り当てている。CP/M-86での実装は文字列からスペースを探索する処理が簡単になるという[[プログラミング]]上の利点があった。一方、MS-DOSは全角スペースに別のコードを割り当てることで、半角入力モードで[[スペースキー]]が2回押されたのか、全角入力モードでスペースキーが1回だけ押されたのかをプログラムが判別できるようにした。これは当時のアプリケーションソフト([[Microsoft Multiplan|Multiplan]]など)でメニュー選択にスペースキーを使用していたためであった。また、[[プリンター]]では全角スペースと半角スペースの幅の比が2対1でない場合があるため、スペースの区別は[[帳票]]設計に影響があった<ref name=":0">西田憲正「Unix風の機能を持ち込んだ日本語MS-DOS2.0の機能と内部構造」『日経エレクトロニクス』 1983年12月19日号、pp.165-190。</ref>。 === 標準化 === Shift_JISは ISO 2022の符号化の範囲外にあるベンダー独自の実装として誕生しており、普及後もしばらく標準化されずにいたが、JIS X 0208:1997において附属書1で「シフト符号化表現」という名前で仕様が定義された。また、[[Internet Assigned Numbers Authority|IANA]]においても「Shift_JIS」の名称が登録されている<ref name="iana-charsets">{{Cite web|publisher=[[Internet Assigned Numbers Authority|IANA]]|url=https://www.iana.org/assignments/character-sets/character-sets.xhtml|title=CHARACTER SETS|accessdate=2011-07-04}}</ref>。 JIS X 0208の拡張規格であるJIS X 0213では、[[2000年]]制定時に附属書1で上位互換仕様の'''Shift_JISX0213'''が定められ、[[2004年]]改定時に'''Shift_JIS-2004'''と名称が変更された。 その後は更新は停止したが、日本語版Windowsが長らく標準をShift_JISに定めていたことで使用され続けた。不都合が多いため[[Unicode]]への移行が呼びかけられている<ref>[https://forest.watch.impress.co.jp/docs/serial/yajiuma/1238646.html 外字を使うのはやめてくれ! Unicodeへの移行を呼びかけるMicrosoftの公式ブログ記事が話題に - やじうまの杜 - 窓の杜]</ref>。 == 符号化方式 == === 区点番号の割当 === [[JIS X 0208]]では文字集合が[[区点番号]]として94×94の文字表の行と列の番号の組で表現される。これら区点番号をShift_JISでは以下のような対応で符号化している。 {| class="wikitable" |+ '''表: 区点(第1面)とShift_JIS符号化''' ! colspan=2 rowspan=2 | Shift_JIS || colspan=8 | 第2バイト(16進) |- ! 40 || … || 7E || 80 || … || 9F || … || FC |- ! rowspan=6 | 第1バイト<br/>(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 0213]]では94×94の文字表が2つあり、それぞれ第1面・第2面と表現される。第1面(第1・2・3水準)は上記符号化の範囲に収まる。第2面(第4水準)は区番号が1・3・4・5・8・12-15・78-94区と不連続に構成されており、この26区分を収録するためにShift_JIS-2004では以下のように対応している。 {| class="wikitable" |+ '''表: 区点(第2面)とShift_JIS符号化''' ! colspan=2 rowspan=2 | Shift_JIS || colspan=8 | 第2バイト(16進) |- ! 40 || … || 7E || 80 || … || 9F || … || FC |- ! rowspan=8 | 第1バイト<br/>(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点 |} === 区点番号からの変換 === 面区点番号 <math>m, k, t</math> から Shift_JISの 第1バイト<math>s_1</math>・第2バイト<math>s_2</math>は以下の式で求められる<ref>{{Cite web|和書| url=https://www.asahi-net.or.jp/~wq6k-yn/code/enc-x0213.html#sjis-2004 | title=JIS X 0213の代表的な符号化方式 § Shift_JIS-2004 | language=ja | accessdate = 2019-04-27 }} Hexadecimal numbers in the source have been converted to decimal for display.</ref>。<math>\lfloor x \rfloor</math>は[[床関数]]。 :<math>s_1 = \begin{cases} \left \lfloor \frac{k + 257}{2} \right \rfloor & \mbox{if } m = 1 \mbox{ and } 1 \le k \le 62 \\ \left \lfloor \frac{k + 385}{2} \right \rfloor & \mbox{if } m = 1 \mbox{ and } 63 \le k \le 94 \\ \left \lfloor \frac{k + 479}{2} \right \rfloor - \left \lfloor \frac{k}{8} \right \rfloor \times 3 & \mbox{if } m = 2 \mbox{ and } k = 1, 3, 4, 5, 8, 12, 13, 14, 15 \\ \left \lfloor \frac{k + 411}{2} \right \rfloor & \mbox{if } m = 2 \mbox{ and } 78 \le k \le 94 \end{cases}</math> :<math>s_2 = \begin{cases} t + 63 & \mbox{if } k \mbox{ is odd and } 1 \le t \le 63 \\ t + 64 & \mbox{if } k \mbox{ is odd and } 64 \le t \le 94 \\ t + 158 & \mbox{if } k \mbox{ is even } \end{cases}</math> === 符号化可能な文字数 === 初期のShift_JISでは、第1バイトが47通り、第2バイトが188通りの符号があるため、 47 × 188 = 94 × 94 = 8836 の2バイト文字を表現することができ、これはJIS X 0208で規定された区点番号のすべてを収められるように設計されている。ここに158字の英数字・半角カナ(スペース含む、DEL除く)を加えると、計 8994 文字となる。 さらに、第1バイトは{{十六進|F0}}-{{十六進|FC}}を用いることで60通りまで拡張されており、 60 × 188 + 158 = 11438 文字を表現することができる。[[Microsoftコードページ932]]の[[IBM拡張文字]]やShift_JIS-2004の第4水準文字の符号化ではこれらの領域を動員している。 == 特徴 == ; 利点 :# 全角文字と、JIS X 0201で定義したいわゆる半角カナ文字を同一のコード体系で表現できる。 :# 日本語環境においては、MS-DOSで日本語用文字コードとして採用されて以来、パソコンにおいて圧倒的な普及度があり、その他の文字符号化方式に比べてデータ交換可能性が高い。 :# [[UTF-8]]などに比べてサイズが小さい。UTF-8では半角カナや漢字の多くは3バイトを要する。 ; 欠点 :# 半角カナのための領域を確保した関係上、区点番号と符号の相互演算には前述のように煩雑な条件分岐が必要である。 :# 2バイト目に{{十六進|80}}未満([[ASCII]]のコード領域)が現れる。このため、文字の区切りの判定に手間がかかる。ファイルや電文の先頭から文字コードの判定をする場合はよいが、後ろから判定をしようとすると、最悪の場合、先頭までたどらないといけないことがあるため、プログラムの作り方に工夫が必要になる。また、この領域に含まれる一部の文字の扱いのため、マルチバイトのEUC-JP、[[UTF-8]]などに比べ、プログラミング上の扱いが難しい([[#2バイト目が5C等になりうることによる問題|次項]]を参照)。 :# [[JIS X 0212|JIS補助漢字]]が表現できない。<!-- 補助漢字の文字数はShift_JISのコード未登録部分に収まらない。実用的に利用している漢字の表現は、文字鏡フォントがあり、このフォントを表すためには、Shift_JISのような方式での文字コードの拡張がよいのか、HTMLによる文字コードと文字フォントの両方を指定するのがよいかは、未解決の問題である。--> :# 文字集合については実装ベンダがJIS X 0208で規定されていない機種依存の拡張を施していることが多く、こういった拡張部分に関してはデータ交換可能性が低い。特に広く普及している[[Microsoftコードページ932]]は[[JIS X 0213]]で拡張された[[Shift_JIS-2004]]と併用できない。 === 2バイト目が5C等になりうることによる問題 === {| class="wikitable" style="font-size: 85%; float:right;" |+ '''{{Visible anchor|表}}: JIS X 0208で2バイト目に{{十六進|5C}}を持つ文字一覧''' ! 文字 !! style="white-space:nowrap" | 符号<br/>(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 <br/>(「講和」の非[[同音の漢字による書きかえ|書換え]]) |- | 彌 || 9C5C || ミ、ビ、や (「弥」の旧字) || [[和泉元彌]]など→和泉元怩ネど |- | 拿 || 9D5C || ダ || '''拿'''捕する→摯゚する |- | 杤 || 9E5C || とち (「[[栃]]」の異体字) || |- | 歃 || 9F5C || ソウ、ショウ、すす-る || 血を'''歃'''って→血を氓チて |- | 濬 || E05C || シュン、さら-う || [[長谷川濬]]など→長谷川烽ネど |- | 畚 || E15C || ホン、ふご、[[もっこ]] || '''畚'''に乗る→痰ノ乗る |- | 秉 || E25C || ヘイ、ヒン、と-る <!--「兼」の字源(諸説あり)--> || '''秉'''燭→竦C |- | 綵 || E35C || サイ、あや || [[動植綵絵]]→動植繩G |- | 臀 || E45C || デン、[[尻|しり]] || '''臀'''部など→苺狽ネど |- | 藹 || E55C || アイ || 和気'''藹'''々→和気蛛X |- | 觸 || E65C || ショク (「[[触]]」の旧字) || |- | 軆 || E75C || タイ (「[[体]]」の異体字) || |- | 鐔 || E85C || タン、[[鍔|つば]] || 金'''鐔'''焼き→金闖トき |- | 饅 || E95C || マン || '''饅'''頭→體ェ |- | 鷭 || EA5C || [[バン (鳥類)|バン]] (鳥の名) || '''鷭'''の群れ→黷フ群れ <!-- 【環境依存の符号化は一旦コメントアウト】 |- | {{JIS2004フォント|晡}} || EB5C || [[JIS X 0213]]: ホ、さる || [[晡時臥山]] |- | {{JIS2004フォント|瀆}} || EC5C || JIS X 0213: トク、けが-す || 冒'''瀆'''する |- | {{JIS2004フォント|祥}}<br/>{{JIS2004フォント|偆}} || ED5C || JIS X 0213: ショウ (「祥」の旧字) <br/> [[CP932]]: シュン、とむ、あつい || 最上義偆 |- | {{JIS2004フォント|薌}}<br/>{{JIS2004フォント|砡}} || EE5C || JIS X 0213: キョウ <br/> CP932: ギョク、そろえる || [[薌城区]]<br/>砡瓶 |- | {{JIS2004フォント|鍥}} || EF5C || JIS X 0213: ケツ、かま || |- | {{JIS2004フォント|Ⅸ}}<br/>{{JIS2004フォント|㎇}} || 875C || JIS X 0213: [[ローマ数字]]の9<br />[[MacJapanese]]: [[ギガバイト]] |- | {{JIS2004フォント|跬}}<br/>{{JIS2004フォント|纊}} || FA5C || JIS X 0213: キ <br/> CP932: コウ、わた || 跬歩 <br/> 属纊に就く |- | {{JIS2004フォント|𨫤}}<br/>{{JIS2004フォント|犾}} || FB5C || JIS X 0213: ひ <br/> CP932: ギン、いず || 𨫤押坑道<br/>鬼犾頭 --> |} Shift_JISでは、カタカナの「ソ」、漢字の「噂」など一部の文字<ref>区点番号では、奇数区29点の文字が該当する。</ref>の2バイト目に、{{十六進|5C}}を使用している。この符号は[[JIS X 0201]]では[[円記号]]、ASCIIなどでは[[バックスラッシュ]]に該当し、多くのプログラミング言語([[C言語|C]]、[[Perl]]、[[Bourne Shell]]など多数)では[[エスケープ文字]]と扱う。したがって、ソースコードや文字データの処理においてShift_JISを想定していないプログラミング環境では問題が起こる。この問題は、同じように2バイト目の範囲に{{十六進|5C}}を含む[[Big5]]や、まれではあるが[[GBK]]などの[[文字コード]]でも発生しうる。 また、{{十六進|5C}}以外についても類似の問題が発生することがある。 * 2バイト目が{{十六進|7C}}になる文字(「ポ」「芸」など)。この符号はASCIIでは<code>|</code>([[バーティカルバー]])に該当する。[[Unix]]やMS-DOSなどの[[シェル]]上でこの符号は[[パイプ (コンピュータ)|パイプ記号]]と認識され、これらの文字を含むファイルは正常に操作できない。 * 2バイト目が{{十六進|5B}}(「ゼ」「深」など)、{{十六進|5D}}(「ゾ」「転」など)になる文字。これらの符号はASCIIでは<code>[</code>, <code>]</code>に該当する。そのためこれらの文字は[[正規表現]]と組み合わせて使うことができない。 このようなASCII[[約物]]と同じ符号を含むためにプログラム上で不具合を起こしうるマルチバイト文字を俗に「だめ文字」あるいは「ダメ文字」と呼ぶ<ref>{{Cite web|和書|url=http://www.ossforum.jp/jossfiles/Linux_SJIS_Support.pdf|title=Linuxマイグレーションガイド LinuxのShift JISサポート -現状とその対応策-|author=日本OSS推進フォーラム プラットフォーム部会 マイグレーションタスクフォース|date=2009-07-10|accessdate=2018-10-16}}</ref>。 この問題を回避する伝統的な方法として、以下のようなものがある。 * ソースコード全体を[[EUC-JP]]や[[UTF-8]]などのGL領域と混用のない符号に変換し、実行またはコンパイルする(例:Perl のencodingプラグマ)。 * 5Cを含む文字列を扱う場合、「<code>ソ</code>」→「<code>ソ\</code>」のようにダメ文字の直後にエスケープ文字を挿入することで目的の符号列として認識させる(例:[[Perl]]のSjisソフトウェア<ref>[https://metacpan.org/release/Char-Sjis Char-Sjis-1.08 - Native Encoding Support by Traditional Scripting - metacpan.org]</ref>や[[JavaScript]])。 * 文字または文字列として扱わず対象文字および内部表現形式を数値の配列として変換を行い、取り扱う際に文字に復号して扱う(例:PerlのEncodeモジュール<ref>[https://metacpan.org/release/Encode Encode-3.00 - character encodings in Perl - metacpan.org]</ref>)。 ; 文字化け例 : マルチバイト非対応環境では、Shift_JISの「構わない」という文字列は「高墲ネい」<ref name="ms932">[[Microsoftコードページ932]]による符号</ref>または「高筲ネい」<ref>[[Shift_JIS-2004]]による符号</ref>に文字化けすることがある。後の文字の2バイト目が[[半角カナ]]「ネ」として認識されるため、「い」でデコードが再同期され、後の文字列は正常に表示される。 :{| class="wikitable" style="text-align:center;" ! colspan="2" | 構 ! colspan="2" | わ ! colspan="2" | な ! colspan="2" | い |- | 8d || style="background: yellow;"| '''5c''' || 82 || ed || 82 || c8 || 82 || a2 |- | colspan="8" | ▼エスケープ文字にあたる'''5c'''が抜けた場合 |- | 8d || style="background: yellow;"| || 82 || ed || 82 || c8 || 82 || a2 |- ! colspan="3" | 高 ! colspan="2" | 墲<ref name="ms932"/> ! ネ ! colspan="2" | い |} : また、同様に「芸能界」という文字列は「芸矧E」に文字化けする。 : {| class="wikitable" style="text-align:center;" ! colspan="2" | 芸 ! colspan="2" | 能 ! colspan="2" | 界 |- | 8c || 7c || 94 || style="background: yellow;"| '''5c''' || 8A || 45 |- | colspan="6" | ▼エスケープ文字にあたる'''5c'''が抜けた場合 |- | 8C || 7c || 94 || style="background: yellow;"| || 8A || 45 |- ! colspan="2" | 芸 ! colspan="3" | 矧 ! E |} == 名称 == === 「シフト」について === Shift_JISの「シフト」とは、JIS X 0208の文字集合を分割したうえで8ビット符号空間内に“ずらして配置”して符号化していることを意味する。 他の符号化方式においても、複数の文字集合を[[漢字シフトコード|シフトコード]]で切り替える操作を「シフト」と呼ぶが、これとは異なる。例えば、[[ISO-2022-JP]]は[[エスケープシーケンス]]で漢字と英数字を切り替えることを、[[EUC-JP]]は[[JIS X 0212|補助漢字]]と半角カナをシングルシフトで切り替えることを指す。 また、[[ビット演算]]の「[[ビット演算#シフト|ビットシフト]]」とも関係がない。 === 別名 === 「'''MS_Kanji'''」は、IANAによりShift_JISの別名として割り当てられている<ref name="iana-charsets"/>。 「'''x-sjis'''」は、IANAに「Shift_JIS」が登録される以前に[[Netscape Navigator (ネットスケープコミュニケーションズ)|Netscape Navigator]] 2.0において使っていた[[文字符号化方式|エンコーディング]]の指定子名である。[[HyperText Markup Language|HTML]]ドキュメントの「charset」の指定にShift_JISの別名として使える[[HTMLレンダリングエンジン|ブラウザエンジン]]がある。 == 脚注 == {{脚注ヘルプ}} {{Reflist}} == 関連項目 == * [[Shift_JIS-2004]] * [[JIS X 0208]] * [[EUC-JP]] * [[文字化け]] {{文字コード}} {{DEFAULTSORT:しふとしす}} [[Category:文字コード]] [[Category:日本語用の文字コード]]
このページで使用されているテンプレート:
テンプレート:0
(
ソースを閲覧
)
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:En
(
ソースを閲覧
)
テンプレート:Font color
(
ソースを閲覧
)
テンプレート:For2
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Shift JISの符号表
(
ソースを閲覧
)
テンプレート:Shift JIS拡張の符号表
(
ソースを閲覧
)
テンプレート:Visible anchor
(
ソースを閲覧
)
テンプレート:十六進
(
ソースを閲覧
)
テンプレート:文字コード
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
Shift JIS
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報