Shift_JIS~Unicode文字コード(16進数)相互変換ワンライナー/Perl

今日も、Perl の呪文の時間がやって参りました。
例えば「漢」の字の Unicode は 6F22、Shift_JIS コードは 8ABF なわけで、
これらを Perl のワンライナーで相互変換するコードを書いてみました。

Unicode~Shift_JIS の相互変換


UCS2(16進数Unicode)→ Shift_JIS(16進数CP932)変換ワンライナー
perl -MEncode -e 'print unpack "H*"=>encode CP932=>chr hex shift' 6f22

Shift_JIS(16進数CP932)→ UCS2(16進数Unicode)変換ワンライナー
perl -MEncode -e 'printf "%x"=>ord decode CP932=>pack n=>hex shift' 8abf

Perl なので、右(shift)から左(print)の順で読みます。
Perl なのに、意外と記号が少ないことに驚かれるかもしれません。w
名前は Shift_JIS の方が分かりやすいけど、変換処理は CP932 がオススメ。

UTF-8(16進数)に変換する場合


Shift_JIS(16進数CP932)→ UTF-8(16進数)変換ワンライナー
perl -MEncode -e 'print unpack "H*"=>encode UTF8=>decode CP932=>pack n=>hex shift' 8abf

UCS2(16進数Unicode)→ UTF-8(16進数)変換ワンライナー
perl -MEncode -e 'print unpack "H*"=>encode UTF8=>chr hex shift' 6f22

16進数6桁で書かれたUTF-8(例:E6BCA2)を入力にして解析するコードは、短く書けないかなあ?

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 7

驚いた 驚いた 驚いた 驚いた 驚いた 驚いた
ナイス

この記事へのコメント

BLUEPIXY
2009年06月26日 04:39
perl -MEncode -e 'print unpack "H*"=> encode "cp932"=> decode "utf-8" => pack "H*" => shift' E6BCA2
でどうでしょう?
2009年07月01日 05:03
おぉ!上記で取れました。unpack "H*" の逆で pack "H*" を使うわけですね、なるほど。
2010年01月30日 16:08
文字(UTF-8)から UCS2 のコードを取り出すワンライナー。
 
perl -MEncode -e 'print unpack "H*"=>encode UCS2=>decode utf8=> shift' あ

この記事へのトラックバック