#!/usr/bin/env ruby
"あ".encode('cp932').ord
"あ".encode('cp932').ord.to_s(16)
"あ".encode('cp932').codepoints.first.to_s(16)
a = "あ".encode('cp932').ord.to_s(2)
"あ".encode('cp932').bytes
"あ".encode('cp932').bytes.map{ |b| b.to_s(16) }
"あ".encode('cp932').bytes.map{ |b| b.to_s(2) }
b = "あ".encode('cp932').bytes.map{ |b| b.to_s(2) }.join
a
b
a == b
"あ".ord
"あ".ord.to_s(16)
"あ".codepoints.first.to_s(16)
a = "あ".ord.to_s(2)
"あ".bytes
"あ".bytes.map{ |b| b.to_s(16) }
"あ".bytes.map{ |b| b.to_s(2) }
b = "あ".bytes.map{ |b| b.to_s(2) }.join
a
b
a == b
- ShiftJIS の「あ」の1バイト目は
82
2バイト目は a0
- String#ord が返す「あ」のコードポイントは16進数で
82a0
82
a0
という2バイトが並んでいるデータ == 82a0
で2バイトなデータ
- UTF-8 の「あ」の1バイト目は
e3
2バイト目は 81
3バイト目は 82
- String#ord が返す「あ」のコードポイントは16進数で
3042
これはユニコード番号(Unicode コードポイント)であり各バイトの値とは無関係
- 結論: String#bytes または
xxd
コマンドで各バイトの値をちゃんとみる