Yabu.log

ITなどの雑記

30日OS自作本28日目2日本語対応

OS自作本28日日本語対応の内容です。

f:id:yuyubu:20180701184336p:plain

JIS企画でも全角文字コード点、区、面

  • 1つの点が、全角1文字に対応
  • 1つの区には、94の点がある
  • 1つの面には、94の区がある

面 - 区 - 点

という感じで 1:94:94の関係で構成されているようです。

感じには第一水準漢字~第四水準漢字があり、1~3水準まで1面に含まれているようです,2面には第四水準漢字がある。

https://ja.wikipedia.org/wiki/JIS漢字コード

あの文字コード0x2422

これを面-区-点の表記に治すには

  • 上位1Byte -0x20 = 区
  • 下位1Byte -0x20 = 点

で1面04区02点となります.

hariboteOSでは第一水準の漢字のみを使えるようにします。

sjis,unicode,eucなどと比べると・・・

$ echo あ|nkf -w|hexdump -C
00000000  e3 81 82 0a                                       |....|
00000004
$ echo あ|nkf -s|hexdump -C
00000000  82 a0 0a                                          |...|
00000003
$ echo あ|nkf -e|hexdump -C
00000000  a4 a2 0a                                          |...|
00000003

一応nkf -jでjisも表示できるのですが、0x2422の周りに変なものがたくさん出てきました。何これ?

$echo あ|nkf -j|hexdump -C
00000000  1b 24 42 24 22 1b 28 42  0a                       |.$B$".(B.|
00000009

各コードそれぞれで文字コード → 面区点に変換する方法があるので(このルールが微妙に違うだけ) hariboteOSではeucsjisでの文字表示に対応させています(utfはありませんね。読者課題ってことでしょうか)

とりあえずeuc,sjis,デフォルトの組み込み半角英数字(16*8)のサイズ で切り替えるようなコマンドも作成しました。

langmode <数字>
  • 0:デフォルトの組み込み文字
  • 1:sjis
  • 2:euc

www.youtube.com

感想

文字コード,最近のマシンではutf8だけど、昔のlinuxeuc,windowssjis、くらいしかわかってないので、一度ちゃんと学んだほうがいいと思った。

  • utf8とutf16の違いなど
  • sjis,jisの違いなど

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)