文字コード

文字コードの学習1

More than 1 year has passed since last update.

文字コードのバイナリ確認

1byte文字と2byte文字の切り替えなどがあるので、「a1」を例に各文字コードのバイナリを調べてみる。
■使用エディタ:サクラエディタ Ver.2.2.0.1

文字 Unicode UTF-16 Shift JIS JIS213
a U+0061 0x0061 0x61 1-3-65
U+3042 0x3042 0x82A0 1-4-2
1 U+0031 0x0031 0x31 1-3-17
U+FF71 0xFF71 0xB1 -
文字コード バイナリ バイト数
JIS 61 - 1B-24-42 - 24-22 - 1B-28-42 - 31 - 1B-28-49 - 31 - 1B-28-42 17
SJIS 61 - 82-A0 - 31 - B1 5
EUC_JP 61 - A4-A2 - 31 - 8E - B1 6
UTF-8 61 - E3-81-82 - 31 - EF-BD-B1 8
UTF-16 FF-FE - 61-00 - 42-30 - 31-00 - 71-FF 10

文字集合

代表的なものとして「JIS X 0208」と「UNICODE」がある。「JIS X 0208」は「区(行)」と「点(列)」で文字の位置を判別する。

JISコード(ISO-2022-JP)

コード:[ESC]:0x1B(27)、$:0x24(36)、(:0x28(40)、B:0x42(66)、I:0x49(73)
漢字の始まり:ESC$B
ASCIIの始まり:ESC(B
半角カタカナの始まり:ESC(I
半角カナの「ア」は31でASCIIの領域とぶつかるのでエスケープシーケンスを使用しているが、その他の方法もあるよう。

EUC-JP

半角カナは前に0x8Eをおいた2byte表現となる。
補助漢字は0x8Fをおいた3byte表現となる。(例:繫U+7E4B)

UTF-8

ASCIIと互換性を持たせるためにASCIIと同じ部分は1yte。
「あ」はU+3042で2進表記にする。
数値の3042だと0000 1011 1110 0010となるが、
文字の3042として0011 0000 0100 0010とする、
1110yyyy 10yxxxxx 10xxxxxx
11100011 10000001 10000010(0xE38182)
https://ja.wikipedia.org/wiki/UTF-8

UTF-16(Unicode)

Windowsのメモ帳やサクラエディタではUnicodeとして表記されている。
先頭にBOM(ByteOrderMark)の2byteが付与される。
0xFFFE:リトルエンディアン
0xFEFF:ビッグエンディアン

参考URL

文字コード表:http://charset.7jp.net/jis.html
半角カナ:http://mikeneko.creator.club.ne.jp/~lab/kcode/hankana.html