0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

文字コードの本質(JIS、SJISの変遷編)

Posted at

文字コードのうち1文字分として2バイト(0x88 0xB7)を得たところまでOK!という方を前提にしています。

以下のことが全てだったりするのですが、
 (私たち)Shift-jis としては、
 0x88 0xB7 を 姐 とする
ということです。

これが 画面 に文字を、という仕様であれば画面のドットに 姐 と見えるような点を表示させる、
これがプリンタに文字を、という仕様であればプリンタは紙に 姐 と見えるような黒を付ける、
という動作をします。

ポイントとしては、画面は点を表示させる処理、プリンタは黒を付ける処理、のところまでは 0x88 0xB7 のまま、ということです。

具体的には、ファイルやネットワーク上では常に 0x88 0xB7 としてデータが記録・読出・通信をしています。

これを頭の中でイメージしておくと、次のことがよくわかると思います。

データを見ようとすると、点を表示させる、黒を付けることになるので、 安 もしくは 0x88 0xB7 でしか見れない!

当たり前でもあるし、次の理由から悩ましい問題でもあります。
これは、jis78 のコードを見たくても、2020年代のWindows、MacOS等で行おうとすると、その時代の処理となることです。

では、一覧のようにして比較してみると、
(私たち)Shift-jis としては 0x88 0xB7 を 姐 とする
(私たち) jis としては 0x88 0xB7 を 袷 とする
参考:https://pentan.info/doc/sjis_list.html
という定義を、それぞれの人たちがしているにすぎません。

なので、0x88 0xB7 が 姐 と画面に表示されたらWidnows、MacOSがShift-jisとして文字を出したんだな、
           袷 と 紙 に印字されたらWidnows、MacOSが jis として文字を出したんだな、
ということなのです。

これらが特に問題になるのは、コード変換のとき、でしょう。
一番よい方法は、全部の時代コードそれぞれに、他では何番、としてデータがあることです。
ただ、誰も作っていないようです・・・
概要としては、Shift-jis > jis のとき、 0x88 0xB7 だったら 0x88 0xBF に置換する。(jisで袷は 0x88 0xBF)
というようにあればOK。
現在では計算での変換が多いのと、一見問題がなさそうですが、jisには78、83、90、2004 で文字の形が違うこと、同じ文字「厩」は 0x 0x の場所が異なること、文字コードとしてShift-jis、Code932(Microsoft Shift-jisと表現されるもの)、UTF-8、NEC系、IBM系、があります。
それぞれの特徴だけが掲載されたページが多いのですが、ライブラリでも全体を賄うものは無いようなので、単純なコード表と変換表(エクセルで作れる?)があればなと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?