3
2

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.

Ruby の SJIS 系文字コードを調べてみた

Posted at

これは何?

PHPのSJIS系文字エンコーディングとエイリアスを表にまとめてみた を読んで、ruby はどうなのかなと思って調べた。

名前

ruby 3.0.1 に入っている全文字コードの中で "しふとジス" という文字列をバイト列にしたときに cp932 と同じバイト列になるものを列挙した。

メイン名 別名
SJIS-DoCoMo 特になし
SJIS-KDDI 特になし
SJIS-SoftBank 特になし
Shift_JIS 特になし
Windows-31J CP932, csWindows31J, SJIS, PCK

え。PCK って何?と思って調べたら、Solaris 上の Shift_JIS(あるいはそれに類するなにか)の名前らしい。

SJISShift_JIS が別のエンコーディングなのか。罠だね。

というわけで、5つの SJIS 系文字コードの差異を調べてみた

5つの文字コードの差異

全部挙げると膨大すぎるので、適当にピックアップした。

太字は少数派。

変換失敗と私用領域は両方 error という表記にした。

bytes SJIS-DoCoMo SJIS-KDDI SJIS-SoftBank Shift_JIS Windows-31J
81 5c "―" U+2015 "―" U+2015 "―" U+2015 "—" U+2014 "―" U+2015
81 60 "~" U+ff5e "~" U+ff5e "~" U+ff5e "〜" U+301c "~" U+ff5e
81 61 "∥" U+2225 "∥" U+2225 "∥" U+2225 "‖" U+2016 "∥" U+2225
81 7c "-" U+ff0d "-" U+ff0d "-" U+ff0d "−" U+2212 "-" U+ff0d
81 91 "¢" U+ffe0 "¢" U+ffe0 "¢" U+ffe0 "¢" U+00a2 "¢" U+ffe0
81 92 "£" U+ffe1 "£" U+ffe1 "£" U+ffe1 "£" U+00a3 "£" U+ffe1
81 ca "¬" U+ffe2 "¬" U+ffe2 "¬" U+ffe2 "¬" U+00ac "¬" U+ffe2
87 40 "①" U+2460 "①" U+2460 "①" U+2460 error "①" U+2460
87 5f "㍉" U+3349 "㍉" U+3349 "㍉" U+3349 error "㍉" U+3349
87 83 "㏍" U+33cd "㏍" U+33cd "㏍" U+33cd error "㏍" U+33cd
87 8a "㈱" U+3231 "㈱" U+3231 "㈱" U+3231 error "㈱" U+3231
ed 40 "纊" U+7e8a "纊" U+7e8a "纊" U+7e8a error "纊" U+7e8a
f1 b2 error error "🀄" U+1f004 error error
f3 44 error "🀄" U+1f004 "↘" U+2198 error error
f4 80 error "↕" U+2195 "⭐" U+2b50 error error
f4 83 error error "⭕" U+2b55 error error
f6 a5 error "🇯🇵" U+1f1ef U+1f1f5 error error error
f6 e4 error error "🇯🇵" U+1f1ef U+1f1f5 error error
f7 6d error error "🀄" U+1f004 error error
f7 90 error "🇺🇸" U+1f1fa U+1f1f8 "🅿" U+1f17f error error
f7 aa error " " U+2002 "♿" U+267f error error
f7 b6 error "⛳" U+26f3 "🈚" U+1f21a error error
f7 d9 error "☑" U+2611 "↙" U+2199 error error
f8 f5 "✌" U+270c error error error error
f9 49 "↙" U+2199 error "☎" U+260e error error
f9 77 "✉" U+2709 error "⛪" U+26ea error error
fa 43 "ⅳ" U+2173 "ⅳ" U+2173 "ⅳ" U+2173 error "ⅳ" U+2173
fa 51 "Ⅷ" U+2167 "Ⅷ" U+2167 "Ⅷ" U+2167 error "Ⅷ" U+2167
fa 58 "㈱" U+3231 "㈱" U+3231 "㈱" U+3231 error "㈱" U+3231
fb 41 "涬" U+6dac "涬" U+6dac error error "涬" U+6dac
fb 54 "焄" U+7104 "焄" U+7104 "☺" U+263a error "焄" U+7104
fb ab "譓" U+8b53 "譓" U+8b53 "🇯🇵" U+1f1ef U+1f1f5 error "譓" U+8b53
fb d7 "錥" U+9325 "錥" U+9325 "™" U+2122 error "錥" U+9325
bytes SJIS-DoCoMo SJIS-KDDI SJIS-SoftBank Shift_JIS Windows-31J

全体を眺めると

  • Shift_JIS は文字が少ない
  • 81 xx の辺りで、一見同じ文字だけど実は Shift_JIS だけ違うコードポイントに行くことが割とある。
  • Shift_JIS ほどではないけど、SJIS-SoftBank も漢字少なめ (fb 41 のような例がたくさんある)
  • SJIS-SoftBank は、同じ絵文字に複数のコードポイントがあたっていてそれが特に他社と一致しているわけではなかったりする。社内の連絡が悪かったのかな。
  • SJIS-SoftBank は、他の人が漢字につかっている領域に絵文字を入れてきたりする。
  • ㈱ などは、Shift_JIS 以外は二箇所にあったりする。NEC と IBM なのかな。

補足

MacJapanese も調べたかったんだけど、 ruby では変換出来ないのでやめた。gem をいれたりすればできるみたいだけど。

あと、PHP は対応している「SJIS-2004」とかが無いのが残念だった。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?