end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

windowsにおいて、丸やゼロで変換される ○ , ◯ , 〇 , ❍

excelで記入されたアンケートを集計したら、 同じ丸(まる、マル)でも複数の文字コードがあり、少々、手間取りました。

特に「ゼロ」で変換すると、漢数字の「〇」が表示されることは、すっかり忘れていました。

以下は、複数の「丸」の文字コードをurl encodingにより表示するものです。

linux odコマンドでも同様のことができますが、私の場合、perlで対応しました。

#!/usr/local/bin/perl
use utf8;
use strict;
use warnings;
use Encode;
use Data::Dumper;

main( @ARGV );

sub main {
    my @chars =
        ('○',    # 丸
         '◯',    # 大きな丸
         '〇',    # 漢数字のゼロ
         '❍',    # 丸    <機種依存文字>
         '⭕',    # 絵文字<機種依存文字>
         '⚪',    # 絵文字<機種依存文字>
        );

    my $i = 0;
    for my $char ( @chars ){
        $i++;
        my $char_utf8 = Encode::encode('utf8',$char);
        my $char_url = url_encode($char_utf8);
        print "$i : $char_utf8 -> $char_url\n";
    }
}

sub url_encode {
    my ($str) = @_;
    $str =~ s/(\W)/'%' . unpack('H2', $1)/ego;
    return $str;
}

sub url_decode {
    my ($str) = @_;
    $str =~ s/%([0-9A-F][0-9A-F])/pack('H2', $1)/egoi;
    return $str;
}

↑こう書くと、↓こう表示されます。

$ ./foo.pl
1 : ○ -> %e2%97%8b
2 : ◯ -> %e2%97%af
3 : 〇 -> %e3%80%87
4 : ❍ -> %e2%9d%8d
5 : ⭕ -> %e2%ad%95
6 : ⚪ -> %e2%9a%aa