たびたび同じジャンルの質問になってしまうのですが
質問させてください。
jis x 0208 という文字コードについてですが
この文字コードは94×94=8836文字を収容可能で、この中に6879文字入っています。
そしてiso2022に準拠しているのでGLやGLに呼び出して使います。
jisx0208は94×94の区点コードを使って一つの二次元の表が使われていますが
通常、コード表は1バイトを4ビットずつにわけて16×16の二次元の表を使われることが多いと思うのですが(7ビット構造のものは違いますが)、
その内GL、GRのコードポイントは94文字づつでありjisx0208の区点コードは8836文字分のコードポイント
があるのでGL、GRには収まらないじゃないか?という疑問です。
94×94というのは、94文字集合の表が94枚重なっているという三次元(っぽい)で表現され、第1バイトで94枚の表の中から一枚選び、第2バイトで選ばれた表から文字を選択するという表現ならしっくりきます。(94文字集合同士ならぴったりと収まるから)
三次元(っぽい)表も区点コードも結局は
同じ文字を指定できるので表現の問題なのでしょうが、
jisx0208はその性格上、固定的な16進値で表すより一段抽象化した区点コードで表した方が便利だから、区点コードというものが導入されているだけで中間バッファに指示して、GR,GLに呼び出すという流れだけ見るには三次元(っぽい)の表の考え方をしていいのでしょうか?
そもそも目に見えないところなのでこんなことをいちいち疑問に思うのもナンセンスかなと思ったのですが、どうもすっきりしないので、どなたか知恵を貸していただけたらと思っています。
No.1ベストアンサー
- 回答日時:
JIS X 0208 は「文字集合」に規定であり、「符号化」についてはまた別の話になります。
JIS X 0208 で言及されている符号化のうち、
いわゆる JIS(ISO-2022-JP) や いわゆる EUC-JP は、ISO-2022 にのっとった符号化ですが、いわゆる Shift_JIS は、ISO-2022にのっとっていません。
で、いわゆる「JISコード」(ISO-2022-JP)ないし「EUCコード」についてでしたら、
> 94×94というのは、94文字集合の表が94枚重なっているという三次元(っぽい)で表現され、第1バイトで94枚の表の中から一枚選び、第2バイトで選ばれた表から文字を選択するという表現ならしっくりきます。(94文字集合同士ならぴったりと収まるから)
その理解で間違いありません。
ISO-2022-JP では、ロッキングシフトで JIS X 0208 の文字集合を GL に割り当てますし、
EUC-JP では、最初からJIS X 0208 の文字集合が GR に割り当ててありますが、
どちらの場合でも「2バイト文字集合」である JIS X 0208 が割り当てられている符号が現れた場合には、
「2バイト読み取って」そこから 1文字が確定します。
区点コードで考えるなら、
1バイト目で区を指定し
2バイト目で点を指定することで、
2バイトで1文字を表現すると考える形になりますが、
結局「3次元の表を選ぶ」というのとやってることは同じです。
ご返答したつもりになっておりました。
遅くなり申し訳ございません。
目に見えない部分の表現なのでどうも納得できなかったですが
的確なアドバイスありがとうございます^^
ご回答ありがとうございます!!!
No.2
- 回答日時:
んー…。
考え方の違いですよねえ…。あなたの考えることは合っていると思いますが、私は別に2次元で表すことに違和感を感じませんでした。
ちょっと考え方が違うなと思うのは、
>通常、コード表は1バイトを4ビットずつにわけて16×16の二次元の表を使われることが多い
ここですね。
1バイトコードならその通りですが、2バイトコードなら1バイト×1バイトで256×256の表を使って描かれることが普通だと思います。
また、ISO2022では94^n文字(あるいは96^n文字)の文字集合を扱えるとなっているので、ここでn=2なら平面で表すのが自然ではないかなと思います。
固定の16進数で表すべきでないのはNo1さんの言うとおり複数の符号化方法があるからですね。
>jisx0208はその性格上 ~ 区点コードで表した方が便利だから
というのは考え方が逆で、ISO2022で示された94^n、この場合94^2のコードポイントを分かりやすく図示するために生まれたのが「区点」という概念なのだと思います。
そしてさらに言えば「区点」を2次元の表で表すのはそれが便利だからであって、別に区点を「94文字集合の表が94枚」という書き方で表しても一向に問題はないでしょう。
あとは、JISX208を3次元で表してしまうとJISX0213(JIS2004)で面区点の3次元構造を使うことができませんし、そもそも3次元構造は目に見える形に表示するのが困難です。
なので平面で表せる限りは平面で表しておくのが便利だと思います。
ご返答したつもりになっておりました。
遅くなり申し訳ございません。
>というのは考え方が逆で、ISO2022で示された94^n、この場合94^2のコードポイントを分かりやすく図示するために生まれたのが「区点」という概念なのだと思います。
こう考えると、なんだか納得できました^^
ご回答ありがとうございます!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- Excel(エクセル) Excelの操作方法を教えてください!頭文字2~8文字で特定の値に返す方法 8 2022/07/14 11:26
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- その他(メールソフト・メールサービス) 【GAS】GMail自動送信 2 2022/09/04 06:19
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 16:55
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
ビットスワップとバイトスワッ...
-
全角半角を調べるライブラリ関...
-
エクセルシート名の制限を変更...
-
VB6でのファイルサイズ取得につ...
-
【ActionScript】全角半角の判...
-
バイナリとBCDコード
-
「1TB」のHDDに日本語は何字入...
-
ソケット通信
-
1KBが1024byteな理由
-
Javaで日本語1文字のバイト数
-
:(コロン)のKeyCode
-
日付時刻を4バイトに
-
【VB2005】テキストボックス内...
-
最大長を用意せずにバイナリデ...
-
VB 2008: LenB関数の代行機能は...
-
unicode←→JISコード
-
Visual C++ 2008 Express Editi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
バイナリとBCDコード
-
バイト列とバイナリ列の違いが...
-
ビットスワップとバイトスワッ...
-
ピクセル,dpiから容量(バイト...
-
SQLで1バイト、2バイト混在...
-
Javaで日本語1文字のバイト数
-
「1TB」のHDDに日本語は何字入...
-
機種依存文字をチェックしたい。
-
VBAでShift-JISのURLエンコード
-
GetWindowTextでアドレスバーか...
-
COBOL PICTUREで X,S,Vの意味
-
【VB2005】テキストボックス内...
-
URLは最高何文字まで可能なので...
-
1KBが1024byteな理由
-
ワイド文字のバイト数が取得で...
おすすめ情報