#!/usr/bin/perl my $charset = 'iso-2022-jp'; my %charset = qw/iso-2022-jp 1 iso-2022-jp-1 1 iso-2022-jp-2 1 iso-2022-jp-3 1 iso-2022-jp-2004 1 euc-jp 1 euc-jisx0213 1 euc-jis-2004 1 shift_jis 1 shift_jisx0213 1 shift_jis-2004 1 windows-31j 1 us-ascii 1 iso-8859-1 1 utf-8 1/; my $type = 'text/html'; my %type = qw!text/html 1 application/xhtml+xml 1 application/vnd.wap.xhtml+xml 1 application/vnd.pwg-xhtml-print+xml 1 application/xv+xml 1 application/xhtml+voice+xml 1 application/xhtml-voice+xml 1 application/x-xhtml+voice+xml 1 text/xml 1 application/xml 1!; for (split /[&;]/, $ENV{QUERY_STRING}) { my ($name, $val) = split /=/, $_, 2; $val =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge; if ($name eq 'charset') { $charset = $val if $charset{$val}; } elsif ($name eq 'type') { $type = $val if $type{$val}; } } use Encode; my $thead = < lang=jalang=enname EOH sub c ($) { qq($_[0]$_[0]$_[0]); } my $ua = $ENV{HTTP_USER_AGENT}; $ua =~ s/([^\x20-\x24\x27-\x3B\x3D\x3F-\x7E])/sprintf '%%%02X', ord $1/ges; print < $type; charset=$charset $thead @{[c(qq(\x5C))]} @{[ ({qw/iso-2022-jp 1 iso-2022-jp-1 1 iso-2022-jp-2 1 iso-2022-jp-3 1 iso-2022-jp-2004 1/}->{$charset} ) ? qq{@{[c(qq{\x1B\x28\x4A\x5C\x1B\x28\x42})]}} :'']} @{[c(qq{\})]} @{[ ($charset eq 'utf-8') ? qq(@{[c(Encode::encode ('utf8', "\xA5"))]}) :($charset eq 'iso-8859-1') ?qq(@{[c(qq{\xA5})]}) :'']} @{[c(qq{¥})]}@{[c(qq{¥})]} @{[ ({qw/shift_jis 1 shift_jisx0213 1 shift_jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\x81\x5F})]}) :($charset eq 'windows-31j') ?qq(@{[c(qq{\x81\x5F})]}) :($charset =~ /iso-2022-jp/) ?qq{@{[c(qq{\x1B\x24\x42\x21\x40\x1B\x28\x42})]}} :({qw/euc-jp 1 euc-jisx0213 1 euc-jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\xA1\xC0})]}) :'']} @{[ ($charset eq 'iso-2022-jp' || $charset eq 'iso-2022-jp-1' || $charset eq 'iso-2022-jp-2') ?qq{@{[c(qq{\x1B\x24\x40\x21\x40\x1B\x28\x42})]}} :({qw/iso-2022-jp-3 1 iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x4F\x21\x40\x1B\x28\x42})]}} :'']} @{[ ({qw/iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x51\x21\x40\x1B\x28\x42})]}} :'']} @{[ ({qw/shift_jis 1 shift_jisx0213 1 shift_jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\x81\x8F})]}) :($charset eq 'windows-31j') ?qq(@{[c(qq{\x81\x8F})]}) :($charset =~ /iso-2022-jp/) ?qq{@{[c(qq{\x1B\x24\x42\x21\x6F\x1B\x28\x42})]}} :({qw/euc-jp 1 euc-jisx0213 1 euc-jp-2004 1/}->{$charset}) ?qq(@{[c(qq{\xA1\xEF})]}) :'']} @{[ ($charset eq 'iso-2022-jp' || $charset eq 'iso-2022-jp-1' || $charset eq 'iso-2022-jp-2') ?qq{@{[c(qq{\x1B\x24\x40\x21\x6F\x1B\x28\x42})]}} :({qw/iso-2022-jp-3 1 iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x4F\x21\x6F\x1B\x28\x42})]}} :'']} @{[ ({qw/iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x51\x21\x6F\x1B\x28\x42})]}} :'']} @{[ ($charset eq 'iso-2022-jp-2') ?qq{@{[c(qq{\x1B\x2E\x41\x1B\x4E\x25\x1B\x28\x42})]}} :'']} @{[($charset eq 'utf-8') ?qq(@{[c(Encode::encode('utf8',"\x{FF3C}"))]}) :'']} @{[c(qq{\})]} @{[($charset eq 'utf-8') ?qq(@{[c(Encode::encode('utf8',"\x{FFE5}"))]}) :'']} @{[c(qq{¥})]}
0x5C@{[ ({qw/shift_jis 1 shift_jisx0213 1 shift_jis-2004 1/}->{$charset}) ? 'YEN SIGN' : (({qw/windows-31j 1/}->{$charset}) ? 'REVERSE SOLIDUS (with glyph of YEN SIGN)' : 'REVERSE SOLIDUS') ]}
ESC 02/08 04/10 05/12YEN SIGN
&#x5C;REVERSE SOLIDUS
0xA5YEN SIGN
U+00A5YEN SIGN
&#xA5;YEN SIGN
&yen;YEN SIGN
0x815FREVERSE SOLIDUS
0x815FFULLWIDTH REVERSE SOLIDUS
ESC 02/04 04/02 02/01 04/00REVERSE SOLIDUS
0xA1C0(REVERSE SOLIDUS) or FULLWIDTH REVERSE SOLIDUS
ESC 02/04 04/00 02/01 04/00REVERSE SOLIDUS
ESC 02/04 04/15 02/01 04/00REVERSE SOLIDUS
ESC 02/04 05/01 02/01 04/00REVERSE SOLIDUS
0x818F(YEN SIGN) or FULLWIDTH YEN SIGN
0x818FFULLWIDTH YEN SIGN
ESC 02/04 04/02 02/01 06/15YEN SIGN
0xA1EFYEN SIGN
ESC 02/04 04/00 02/01 06/15YEN SIGN
ESC 02/04 04/15 02/01 06/15YEN SIGN
ESC 02/04 05/01 02/01 06/15YEN SIGN
ESC 02/14 04/01 SS2 02/05YEN SIGN
U+FF3CFULLWIDTH REVERSE SOLIDUS
&#xFF3C;FULLWIDTH REVERSE SOLIDUS
U+FFE5FULLWIDTH YEN SIGN
&#xFFE5;FULLWIDTH YEN SIGN
$thead @{[c(qq(\x7E))]} @{[ ($charset eq 'iso-2022-jp' || $charset eq 'iso-2022-jp-1' || $charset eq 'iso-2022-jp-2') ? qq{@{[c(qq{\x1B\x28\x4A\x7E\x1B\x28\x42})]}} :'']} @{[c(qq{~})]}@{[c(qq{˜})]} @{[ ({qw/shift_jis 1 shift_jisx0213 1 shift_jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\x81\x50})]}) :($charset eq 'windows-31j') ?qq(@{[c(qq{\x81\x50})]}) :($charset =~ /iso-2022-jp/) ?qq{@{[c(qq{\x1B\x24\x42\x21\x31\x1B\x28\x42})]}} :({qw/euc-jp 1 euc-jisx0213 1 euc-jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\xA1\xB1})]}) :'']} @{[ ($charset eq 'iso-2022-jp' || $charset eq 'iso-2022-jp-1' || $charset eq 'iso-2022-jp-2') ?qq{@{[c(qq{\x1B\x24\x40\x21\x31\x1B\x28\x42})]}} :({qw/iso-2022-jp-3 1 iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x4F\x21\x31\x1B\x28\x42})]}} :($charset eq 'utf-8') ?qq(@{[c(Encode::encode('utf8',"\x{203E}"))]}) :'']} @{[ ({qw/iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x51\x21\x31\x1B\x28\x42})]}} :'']} @{[c(qq{‾})]} @{[ ({qw/shift_jis 1 shift_jisx0213 1 shift_jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\x81\x60})]}) :($charset eq 'windows-31j') ?qq(@{[c(qq{\x81\x60})]}) :($charset =~ /iso-2022-jp/) ?qq{@{[c(qq{\x1B\x24\x42\x21\x41\x1B\x28\x42})]}} :({qw/euc-jp 1 euc-jisx0213 1 euc-jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\xA1\xC1})]}) :'']} @{[ ($charset eq 'iso-2022-jp' || $charset eq 'iso-2022-jp-1' || $charset eq 'iso-2022-jp-2') ?qq{@{[c(qq{\x1B\x24\x40\x21\x41\x1B\x28\x42})]}} :({qw/iso-2022-jp-3 1 iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x4F\x21\x41\x1B\x28\x42})]}} :($charset eq 'utf-8') ?qq(@{[c(Encode::encode('utf8',"\x{301C}"))]}) :'']} @{[ ({qw/iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x51\x21\x41\x1B\x28\x42})]}} :'']} @{[c(qq{〜})]} @{[ ($charset eq 'shift_jisx0213' or $charset eq 'shift_jis-2004') ?qq(@{[c(qq{\x81\xB0})]}) :($charset eq 'iso-2022-jp-3' or $charset eq 'iso-2022-jp-2004') ?qq{@{[c(qq{\x1B\x24\x28\x4F\x22\x32\x1B\x28\x42})]}} :($charset eq 'euc-jisx0213' or $charset eq 'euc-jis-2004') ?qq(@{[c(qq{\xA2\xB2})]}) :'']} @{[ ({qw/iso-2022-jp-2004 1/}->{$charset}) ?qq{@{[c(qq{\x1B\x24\x28\x51\x22\x32\x1B\x28\x42})]}} :'']} @{[ ($charset eq 'iso-2022-jp-2' || $charset eq 'iso-2022-jp-1') ?qq{@{[c(qq{\x1B\x24\x28\x44\x22\x37\x1B\x28\x42})]}} :({qw/euc-jp 1 euc-jisx0213 1 euc-jis-2004 1/}->{$charset}) ?qq(@{[c(qq{\x8F\xA2\xB7})]}) :'']} @{[($charset eq 'utf-8') ?qq(@{[c(Encode::encode('utf8',"\x{FF5E}"))]}) :'']} @{[c(qq{~})]}
0x7E@{[ ({qw/shift_jis 1 shift_jisx0213 1 shift_jis-2004 1/}->{$charset}) ? 'OVER LINE or OVER LINE with glyph of TILDE' : 'TILDE' ]}
ESC 02/08 04/10 07/14OVER LINE
&#x7E;TILDE
&tilde;TILDE
0x8150(OVER LINE) or FULLWIDTH OVER LINE
0x8150FULLWIDTH OVER LINE
ESC 02/04 04/02 02/01 03/01OVER LINE
0xA1B1OVER LINE
ESC 02/04 04/00 02/01 03/01OVER LINE
ESC 02/04 04/15 02/01 03/01OVER LINE
U+203EOVER LINE
ESC 02/04 05/01 02/01 03/01OVER LINE
&#x203E;OVER LINE
0x8160WAVE DASH
0x8160FULLWIDTH TILDE
ESC 02/04 04/02 02/01 04/01WAVE DASH
0xA1C1WAVE DASH
ESC 02/04 04/00 02/01 04/01WAVE DASH
ESC 02/04 04/15 02/01 04/01WAVE DASH
U+301CWAVE DASH
ESC 02/04 05/01 02/01 04/01WAVE DASH
&#x301C;WAVE DASH
0x81B0TILDE
ESC 02/04 02/08 04/15 02/02 03/02TILDE
0xA2B2(TILDE) or FULLWIDTH TILDE
ESC 02/04 02/08 05/01 02/02 03/02TILDE
ESC 02/04 02/08 04/04 02/02 03/07TILDE
SS3 0xA2B7TILDE or FULLWIDTH TILDE
U+FF5EFULLWIDTH TILDE
&#xFF5E;FULLWIDTH TILDE

Your User Agent Name : $ua

EOH