いよいよ公開!ア・ゴースト・ストーリーのみどころ紹介!

僕の買った参考書には

ASCIIコード・・・英数字・記号を1Bで表す。
JISコード・・・英数字・記号を1Bで表すコード体系とひらがな・漢字を2バイトで表すコード体系。
シフトJISコード・・・ASCIIの1Bコード体系とJISの2Bコード体系を合体した文字コード。

とあるのですが、JISコードとシフトJISコードの違いが分かりません。というか同じではないでしょうか?2つのコードの違いを教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

> 漢字の始まりを示すシフトインと漢字の終わりを示すシフトアウト



違います。
シフトインとシフトアウトはそれぞれアスキーコードで言うと
0x0F と 0x0E で、7ビットしか使えない環境で
半角カナを送信するときなどに使われるものです。

今ではJISコードって言い方も変なんですが
(漢字のJIS規格はひとつじゃないから)
とりあえず

JISコード
漢字やひらがな(2バイトで表される)などといわゆる半角英数字
(1バイトで表される)
のを、ある特定のしるし(エスケープシーケンス)で
切り替えるやり方

ShiftJIS
JISコードのような切り替えをやらずにまぜて表すやり方

ぐらいでいいんじゃないかと。

正確に書こうとすると800文字じゃとてもたりません。
まあ#1の方の挙げているリンク先に詳しくかかれてますけど。
    • good
    • 0

JISコードは漢字の始まりを示すシフトインと漢字の終わりを示すシフトアウトを付ける事で漢字(2Byteコード)と漢字で無い部分(1Byteコード)を区別しています。



ShiftJISコードはアルファベットにも半角カナにも使っていないJIS8Bitコードの空き 0x81~0x9F、0xE0~0xFC を漢字の1バイト目とする事で漢字(2Byteコード)と漢字以外(1Byteコード)を区別しています。
    • good
    • 2

★買った参考書は分かりにくそうですね。


・『1B』とか『2B』って1バイト、2バイトという意味かな?
>JISコードとシフトJISコードの違いが分かりません。
>というか同じではないでしょうか?
 ↑
 同じではないです。
>2つのコードの違いを教えてください。
 ↑
 半角文字の英数字・記号などはどちらも1バイトの ASCII コードとして表します。
 JIS漢字コードとシフトJIS漢字コードは両方とも1つの漢字(ひらがなも含む)を
 2バイトで1文字と表します。ここは共通。
・JIS漢字コードは
 第1バイトに 0x21~0x7E までの文字コードを使う(94種類)
 第2バイトにも 0x21~0x7E までの文字コードを使う(94種類)
 この2バイトの組み合わせで漢字文字を表現しています。(94×94=8836種類)
 つまり
 0x2121、0x2122、0x2123…0x212F⇒ 、。,.・:;?!゛゜´`¨
 0x2130、0x2131、0x2132…0x213F⇒^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/
  :
 0x7E70、0x7E71、0x7E71…0x7E7E⇒・・・・・・・・・・・・・・・
 となります。
・シフトJIS漢字コードはちょっと複雑で
 第1バイトに 0x81~0x9F、0xE0~0xFC までの文字コードを使う(60種類)
 第2バイトは 0x40~0x7E、0x80~0xFC までの文字コードを使う(188種類)
 この2バイトの組み合わせで漢字文字を表現しています。(60×188=11280種類)
 つまり
 0x8140、0x8141、0x8142…0x814F⇒ 、。,.・:;?!゛゜´`¨^
 0x8150、0x8151、0x8152…0x815F⇒ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\
  :
 0xFCF0、0xFCF1、0xFCF2…0xFCFC⇒・・・・・・・・・・・・・
 となります。
・上記で『・』となっているのは文字コードのフォントがないからです。注意。
 あと JIS 漢字コードはメールなどで使われています。
 http://www.asahi-net.or.jp/~AX2S-KMTN/ref/jisx02 …→『JIS基本漢字』
 シフト JIS 漢字コードは普通のテキストファイルなどに多く使われています。
 だから『あいうえお』はシフトJISコードで表すと
 0x82A0、0x82A2、0x82A4、0x82A6、0x82A8 となります。
・以上。ネット検索した方がいい資料が見つかりますよ。
    • good
    • 3

2バイトに割り付けてある場所が違います。


http://www.gprj.net/dev/tips/other/kanji.shtml
がわかりやすいと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qビットとバイトの違い

PCの何かの単位に「ビット」とか「バイト」などという単位がありますが、具体的にどのように違うのですか? 教えてください!

Aベストアンサー

ビット;PCで扱うデータの最小の単位。2進法で表される。
バイト;8個のビットをまとめて1つのデータとしたときの単位。

1バイトは、ビット8個から表現されるので、
00000000(2)~11111111(2)の256個のデータがある。

具体例;
1バイトが使用される例で、文字データがある。

アルファベットなどの半角1文字は、1バイトで表現するが、

日本語などの全角1文字は、2バイトで表現する。文字データの集まり
であるファイルサイズは、その大きさをバイトで表現する。

100kバイトとは、1バイト文字が、100,000文字あるファイル
という意味。

QWindowsの標準文字コードについて

標準文字コードはシフトJISとされていますが、

例えば、windowsでメモ帳を使って文字を書いて、保存をした時。
保存する時の文字コードは自由に選択できますよね。

この時点だと、どこにシフトJISコードが使われているのかはサッパリ分かりません。

それで考えたのですが、

文章を保存する時では無く、

メモ帳に書いている時に使われている文字が、
シフトJISなのでしょうか?(その文字を16進数としてみた時にシフトJISの文字コードになっている)

つまり、
もともと、windows上でwebページのフォームに文字を入力するとか、
メモ帳で文章を書くと、
シフトJISとして書いている事になるのでしょうか?(シフトJISコードに対応した16進数で書いている)

それを、例えばメモ帳ならシフトJISコードを違うコードに変換して保存する機能が付いている
ブラウザには、その機能は無いから、フォームからはシフトJISコードとしてのデータしか遅れない。

そう考えると、
windows上では入力する全ての文字がシフトJISコードという事になり、
標準文字コードがシフトJISという言葉にも納得がいくのですが、

上記の理解で正解なのでしょうか?

よろしくお願いします。

標準文字コードはシフトJISとされていますが、

例えば、windowsでメモ帳を使って文字を書いて、保存をした時。
保存する時の文字コードは自由に選択できますよね。

この時点だと、どこにシフトJISコードが使われているのかはサッパリ分かりません。

それで考えたのですが、

文章を保存する時では無く、

メモ帳に書いている時に使われている文字が、
シフトJISなのでしょうか?(その文字を16進数としてみた時にシフトJISの文字コードになっている)

つまり、
もともと、windows上でwebペー...続きを読む

Aベストアンサー

>まず自分がEUC-JPで保存したファイルを、
>EUC-JPを保存できたエディタで開くと見れるのはどうしてでしょうか??

>EUC-JPのコード→unicode→シフトJIS(このままだと文字化け)

>エディタでEUC-JPのファイルを文字化けせずに見られるのは、
>エディタがEUC-JPをシフトJISのコードに戻しているのでしょうか?

基本的にはその通りです。EUCに対応したエディタは、読み込み時に自動的に、あるいは明示されることにより、EUCコードを変換します。
変換の流れはOSの機能をどこまで使うかによって
EUC-JPのコード→シフトJIS(→unicode OSが自動処理)
EUC-JPのコード→unicode(→シフトJIS) (OSの内部コードにアプリが変換)
の両パターンありえると思います。

>2つ目は、ブラウザで文字化けする時に、
>正しいエンコードを選ぶと正しく表示されるのは、
>指定された文字コードからシフトJISコードに変換して表示しているか>ら、正しく表示されるのでしょうか?

その通りです。例えばInternetExplorerにはその専用の変換ルーチンが用意されています。実際WEBページやテキスト文書をIEであけて、保存の際にコードを選択すると任意のコードに変換することができます。

>まず自分がEUC-JPで保存したファイルを、
>EUC-JPを保存できたエディタで開くと見れるのはどうしてでしょうか??

>EUC-JPのコード→unicode→シフトJIS(このままだと文字化け)

>エディタでEUC-JPのファイルを文字化けせずに見られるのは、
>エディタがEUC-JPをシフトJISのコードに戻しているのでしょうか?

基本的にはその通りです。EUCに対応したエディタは、読み込み時に自動的に、あるいは明示されることにより、EUCコードを変換します。
変換の流れはOSの機能をどこまで使うかによって
EUC-JPの...続きを読む

Qexcelで文字コード(JISコード)を表示する関数ってありますか?

仕事の都合で、JISコードを調べなければならなくなったのですが、
調査対象がいっぱいあって困っています。
excel(に限りませんが、excelが使い慣れているので)の関数などで、
文字コードを返してくれる関数などってありますか?
CODE関数を試してみたのですが(=CODE(山))、循環参照というエラーが出てしまって困っています。
できれば複数の文字(1行単位など)が一度に文字コード変換ができればいいのですが、無理なら1文字ごとでもいいので探しています。
教えてください。

Aベストアンサー

文字列がA1にあると仮定して、

B1に下記数式を記入して、右方向にフィルコピー♪
=IF(ISERROR(CODE(MID($A$1,COLUMN(A1),1))),"",CODE(MID($A$1,COLUMN(A1),1)))

この中で、「COLUMN(A1)」はセル番地を変更しなくていいです。
実際に文字が存在する番地に合わせて変更するのは、
「MID($A$1」 このMIDの右のセル番地だけです。

これでセルに含まれた文字数分、右にコピーすれば
一文字づつコードが返ります。

QJIS第三、第四水準の漢字は入力可能になったか?

OSが Win 7 Pro SP-1 の私のパソコンでは、JIS第一水準および第二水準までの漢字は入力可能だけど、第三、第四水準の漢字は入力不可能です。

Windows 8 では、第三、第四水準の漢字も入力できるようになっていますか?
漢字コードで入力する場合、入力可能なコードの種類は次のドレとドレかを教えて下さい。
区点コード、JISコード、シフトJISコード、UNIコード

具体例を挙げておきます。
添付 Fig-1 の漢字(「徳」の異字体)  →第四水準
「山」冠の下に「奇」(「嵜」の異字体)→第三水準
「山」偏の右に「竒」(「崎」の異字体)→第三水準
これらの漢字をMS明朝で入力&表示できますか?

Aベストアンサー

まず表示可能かどうかについて。

PC上で文字が表示されるには次の3つが必要です。
・Windows自体の対応
・ソフトの対応
・フォントの対応

順に見ていきます。
・Windows自体の対応
これはWindows2000からすでにJIS第3第4水準の文字(を含むUnicode1面以上)に対応済みです。(ただし設定不要になったのはXPから)
No1さんの示したサイトに「現在のWindowsでは面02を利用することは不可能であり」とありますが、これはWindowsでなくソフトやフォントの対応のことを言っているのでしょう。誤解を招く書き方です。
・ソフトの対応
Unicodeに非対応のソフト、Unicodeに対応していても1面以上に非対応のソフトがあります。最近は少なくなりましたが、一部に根強く残っています。
・フォントの対応
Windowsに標準搭載されているMSゴシック・MS明朝がJIS第3第4水準の文字に対応したのはWindowsVistaからです。ただし、その後XP向けに同フォントが無償公開されていますし、フリーフォントで対応可能です。

…というわけで、表示するだけであればWindowsVistaからは何もせずともたいていのソフトで可能ですし頑張ればWindows2000でも可能です。

次に入力について。
まず、
> 漢字コードで入力する場合、入力可能なコードの種類は次のドレとドレかを教えて下さい。
> 区点コード、JISコード、シフトJISコード、UNIコード
・区点コードとJISコードは同じものです。最近のMS-IMEのIMEパッドでは使えます(図参照)。が、これはかなり特殊な例で、普通に区点コードやJISコードといったら第1第2水準のみと考えたほうが良いでしょう。
なお第3第4水準を含むのであれば「区点コード」ではなく「面区点コード」になりますがあまりこの名は見かけません。
・シフトJISコードは、第3第4水準を扱える規格がほとんど普及しませんでしたので、入力もまず見かけません。
・UnicodeはPCで扱えるすべての文字が扱えます。あまりUNIコードとは書きません。Unicodeかユニコードです。

また、MS-IMEで普通に変換してこれらの文字を出せるかどうかはバージョンや設定によって異なります。
新しいものほど変換可能な文字が増えています。設定は単漢字辞書を使う設定にすると難しい字も出るようになります。

まず表示可能かどうかについて。

PC上で文字が表示されるには次の3つが必要です。
・Windows自体の対応
・ソフトの対応
・フォントの対応

順に見ていきます。
・Windows自体の対応
これはWindows2000からすでにJIS第3第4水準の文字(を含むUnicode1面以上)に対応済みです。(ただし設定不要になったのはXPから)
No1さんの示したサイトに「現在のWindowsでは面02を利用することは不可能であり」とありますが、これはWindowsでなくソフトやフォントの対応のことを言っているのでしょう。誤解を招く書き方です。
・ソ...続きを読む

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

Q文字コードを指定する際sjisなのかshift_jisかshift-jisなのか

お世話になります。
perl5.8において文字コードを指定or変換する際
shift_jis
shift-jis
Shift_JIS
SJIS
EUC_JP
EUC-JP
utf-8
utf8
-と_の違いや大文字小文字の違いなど記述の違いを良く見かけるのですが、実際決まった指定方法などはあるのでしょうか。
逆に文字コードを指定する際、●●のように指定しても無効で●●のように指定しないと有効ではないですよ。。みたいな。

またperlに限らずPHPやHTML、XMLなどではどうなっているのでしょうか

どなたかご存知の方いましたら
・上記3つの文字コードについてと
・perlのバージョンの違い、言語の違いなど

文字コードの文字列の指定に関する全般についてご教授願えませんでしょか。

宜しくお願い致します。

Aベストアンサー

文字コードを指定するモジュールによって、指定する文字列が違う場合があります。

たとえば、JcodeでシフトJISコードを指定するときはは'sjis'ですが、
Encodeでは次のような正規表現になります。

/\bshift.*jis$/i
/\bsjis$/i

これは、shift-jisでもShift_jisでもsjisでもSJISでもマッチします。
極端な話、shift(・∀・)jisでもマッチします(多分)

他の文字コードでも同様に正規表現でエイリアスが設定されていますので、詳しくはEncodeモジュールのperldocを参考にしてください。

Q「以降」ってその日も含めますか

10以上だったら10も含める。10未満だったら10は含めない。では10以降は10を含めるのでしょうか?含めないのでしょうか?例えば10日以降にお越しくださいという文があるとします。これは10日も含めるのか、もしくは11日目からのどちらをさしているんでしょうか?自分は10日も含めると思い、今までずっとそのような意味で使ってきましたが実際はどうなんでしょうか?辞書を引いてものってないので疑問に思ってしまいました。

Aベストアンサー

「以」がつけば、以上でも以降でもその時も含みます。

しかし!間違えている人もいるので、きちんと確認したほうがいいです。これって小学校の時に習い以後の教育で多々使われているんすが、小学校以後の勉強をちゃんとしていない人がそのまま勘違いしている場合があります。あ、今の「以後」も当然小学校の時のことも含まれています。

私もにた様な経験があります。美容師さんに「木曜以降でしたらいつでも」といわれたので、じゃあ木曜に。といったら「だから、木曜以降って!聞いてました?木曜は駄目なんですよぉ(怒)。と言われたことがあります。しつこく言いますが、念のため、確認したほうがいいですよ。

「以上以下」と「以外」の説明について他の方が質問していたので、ご覧ください。
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=643134

Qバイナリデータとテキストデータの違いについて

宜しくお願いします。

バイナリデータを用語辞典で調べると
「テキスト形式(文字データ)以外のデータ形式全般のこと。
実行可能形式のコンピュータプログラムや、画像や音声、
動画などのデータなどがバイナリデータにあたる。」
(http://e-words.jp/w/E38390E382A4E3838AE383AA.html)
とあります。

これでは、バイナリデータとテキストデータの違いが分かりません。

テキストデータはコードの集まりで、
さらに細かくすると0と1の集まり(?)だから・・・
と考えるとバイナリデータとテキストデータの
違いが分かりません。

Q1.私は何が分かっていないのでしょうか?
Q2.バイナリデータとテキストデータの違いを教えてください。

宜しくお願い致します。

Aベストアンサー

バイナリデータは01の集まりです。
テキストデータは文字としての意味が与えられて居ます。ただテキストデータの01としての表現方法はプラットフォーム(OSやアプリケーション)によって異なります。例えば英文字コードでもメインフレームで使われるEBCDICもあり、unixやPCで使われるASCIIもあります。また日本語など英語以外の文字をあらわすのには、さらに多くの種類があります。また改行を表す文字もいろいろです。
例えば telnet で他のコンピュータにログオンして通信する時の文字コードはASCIIで、改行はCRLFと決まっているので、そうでないコンピュータはtelnetプログラムが自分のコンピュータのコード体系と相互変換します。

ftpでテキストデータを転送する時も同じくASCIIとCRLFと決まっています。ただ日本語文字の時にどのコードを使うかは規格では決まっていないので、ftpクライアントで、相手コンピュータの日本語コード種類を指定して、自分と合わなければ転送時に相互変換します。

Cプログラムでもテキストの改行は'\n'と決まっているので、そうでないWindowsの場合はCプログラムとの間でCRLFと'\n'の相互変換が、ライブラリ中で自動的に行われます。

そういった変換を全く行わないのがバイナリデータです。画像ファイルなどはjpegと形式が決まればどのコンピュータでも同じフォーマットなので変換の必要はありません。逆にテキストとみなして変換するとデータが壊れてしまいます。

バイナリデータは01の集まりです。
テキストデータは文字としての意味が与えられて居ます。ただテキストデータの01としての表現方法はプラットフォーム(OSやアプリケーション)によって異なります。例えば英文字コードでもメインフレームで使われるEBCDICもあり、unixやPCで使われるASCIIもあります。また日本語など英語以外の文字をあらわすのには、さらに多くの種類があります。また改行を表す文字もいろいろです。
例えば telnet で他のコンピュータにログオンして通信する時の文字コードはASCIIで、改行はCRL...続きを読む

QJISコード変換について

String str = "アイウエオ";

byte test[] = moji.getBytes("ISO2022JP");
String ret = new String(test);

上記のプログラムで半角カナをJISコードに変換すると
文字化けしているのですが、文字化けしないようにするにはどうしたらよいでしょうか。

なお、JISコードの
String test = "アイウエオ"; ← "アイウエオ"はJISコード(文字化け無しの半角カナ文字)

String ret = new String(test .getBytes("ISO2022JP"),"JISAutoDetect");

これで、文字化けせずUnicodeに変換できたのですが、単純に逆に変換しただけでは、半角カナの文字は、JISコードに変換すると文字化けしてしまうのでしょうか?
どなたか教えて頂けないでしょうか?

Aベストアンサー

EUCコード、Uniコード、シフトJISコードには半角カナが存在しますが、JISコードには半角カナは存在しません。

なお、一部の端末では、漢字OUTのシーケンス「ESC ( J」の代わりに「ESC ( I」のシーケンスで半角カナになる端末が存在しますが、各種コード間の変換ではサポートされていないのが実状です。

QUTF-8とASCIIコードにおける互換性について

UTF-8とASCIIはそのASCIIコードの範囲のおいて
互換性を持ちます。(と、書籍や多種な文献にはそういった記述があります)

たとえば【A】という文字をUTF-8で符号化した際は【41】(16進数で)
さらにASCIIコードでも【41】という値がAという文字に割り当てられています。
確かに、一件互換しているようにみえますが、UTF-8っていうことは最終的には
Unicode上のコードポイントの値・・・つまり0x0041という値に復元?(というのでしょうか)するわけですよね?
でそのUnicodeの文字集合上から復元したコードポイントに対応する文字を参照しAという文字をみつけてくると・・・。
これって【A】という文字をUTF-8で符号化した歳のバイト列はASCIIと一致しているけれど
結局Unicodeコードポイントに直した場合【00】という上位バイトが無駄にくっついてきて【0x0041】となり
互換性がなくなるのではとおもったのですが・・・。

これはどういう意味の互換性なのでしょうか?
識者の方ご教授ください。
お願い致します。

Aベストアンサー

No1,3,6です。

>とあった時、おそらくどの言語でもそうだと思うのですが、スクリプトファイル内の特定の文字列はそれぞれ個別にエンコーディング情報を持つと思います。(※言語によっては持たいない?)

持たないのが普通です。
文字列個別にエンコード情報を持つのは、メジャーな言語だとRubyくらい?
他の言語では、プログラム中では1つのプログラム中では一種類のエンコードしか扱えません。もしくは、言語は全くエンコードを関知せず、すべてプログラマが管理するか。

最初の疑問に戻って、
「UTF-8とASCIIはそのASCIIコードの範囲において互換性を持ちます。」
というのは、
「ASCIIコードの範囲の文字を、ASCIIでエンコードしても、UTF-8でエンコードしても、全く同じ値になる」という意味であり、それ以上でも以下でも無いです。
別の言い方をすると、ASCIIコードの範囲の文字しか含まれないファイルであれば、そのファイルのエンコードがASCIIだとかUTF-8だとか、さらに(バックすらスラッシュ等)一部の記号を除けばSHIFT_JISだとかeuc-jpだとかいうのも区別できないというか同じです。

No1,3,6です。

>とあった時、おそらくどの言語でもそうだと思うのですが、スクリプトファイル内の特定の文字列はそれぞれ個別にエンコーディング情報を持つと思います。(※言語によっては持たいない?)

持たないのが普通です。
文字列個別にエンコード情報を持つのは、メジャーな言語だとRubyくらい?
他の言語では、プログラム中では1つのプログラム中では一種類のエンコードしか扱えません。もしくは、言語は全くエンコードを関知せず、すべてプログラマが管理するか。

最初の疑問に戻って、
「UTF-8とASC...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報