掲示板に戻る
No:660 タイトル:GEAR戦士撫子 新Part655 お名前:プロフェッサー圧縮 投稿日:2025/06/18 08:12:28 単表示 返信

欧米系アルファベット+αのASCIIと、万単位の漢字仮名を持つ日本語を同居させるために「こっから先は漢字ゾーン」「こっから先はASCII」とする印がJISコードにはある、と述べました。

それぞれSI・SOと呼ばれていますが・・・・・・

これらはその特性上、ただの印であって文字数には含まれません

ただ当たり前ですがメモリは1バイト分使います。


          ◇          ◇          ◇


つまり。

先程から例に出しているyyyy年mm月dd日は、正確には次のような状態です。

01234 567 89a bcd efg hij
yyyySI年SOmmSI月SOddSI日SO

10以降は表記の都合上アルファベットにしていますが、a=10,b=11,...と読み替えてください。


          ◇          ◇          ◇


見て分かる通り、本当のmmの位置は7バイト目ではなく9バイト目です。

もし7バイト目に上書こうものなら年の後半バイトを書き換えてしまうことになりますのでものの見事に文字化けします

「半角英数字記号は1バイト 漢字は2バイト」なる半端な知識で作るとご覧の有様、という訳です。


          ◇          ◇          ◇


とまあ。

流石にこれは罠すぎると言いますか、「今何文字目か」を計算するにも七面倒この上ないとなりまして。

SI/SOを取っ払ったJISコードの派生規格が作られました。

Shift-JISです。