LoginSignup
3
2

More than 1 year has passed since last update.

文字コードの学習1

Last updated at Posted at 2017-08-14

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

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

文字 Unicode UTF-16 UTF-32 Shift JIS JIS213 EUC-JP
a U+0061 0x0061 0x61000000 0x61 1-3-65 0x61
U+3042 0x3042 0x42300000 0x82A0 1-4-2 0xA4A2
1 U+0031 0x0031 0x31000000 0x31 1-3-17 0x31
U+FF71 0xFF71 0x71FF0000 0xB1 - 0x8EB1
文字コード バイナリ バイト数
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
UTF-32 61-00-00-00 - 42-30-00-00 - 31-00-00-00 - 71-FF-00-00 16

文字集合

代表的なものとして「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
ひらがなの「あ」は3byteと、1文字を表すbyte長は1~4byteと可変となる。ただし、4byteのUTF-8が扱えないシステムもある。
JIS X 0213の第3・第4水準漢字の一部が4byteで表される。(例「𠈓」人偏に両。U+20213。0xF0A08893)

UTF-16(Unicode)

Windowsのメモ帳やサクラエディタではUnicodeとして表記されている。
先頭にBOM(ByteOrderMark)の2byteが付与される。
0xFFFE:リトルエンディアン
0xFEFF:ビッグエンディアン
1文字を表すbyte長は2byte固定だが、1文字を表すのに4byteを使用するサロゲートペアがある。
(例「𠈓」人偏に両。U+20213。0x40D813DE)

参考URL

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

文字化け

「あ」が化ける場合の想定
SJIS:0x82A0
EUC:0xA4A2
UTF16:0x4230

3
2
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
3
2