UTF-8文字コード表
#! /usr/local/bin/perl
print qq(Content-type: text/html; charset=UTF-8\n\n);
print <<END;
<html>
<head>
<title>UTF-8文字コード表</title><style type="text/css">
<!--
body {
text-align:center;
}
h1 {
margin:2px;
font-size:18px;
text-align:center;
}
table {
margin:20px;
width:95%;
border-top:1px solid #666;
border-left:1px solid #666;
}
th, td {
text-align:center;
border-right:1px solid #666;
border-bottom:1px solid #666;
}
th {
background:#fc9;
}
//-->
</style>
</head>
<body>
<h1>UTF-8文字コード表</h1>
<a href="?">2バイト文字/1バイト文字</a>
<a href="?e0">e0a080~</a>
<a href="?e2">e28080~</a>
<a href="?e4">e48080~</a>
<a href="?e6">e68080~</a>
<a href="?e8">e88080~</a>
END
if($ENV{'QUERY_STRING'}) {
print qq(<table cellspacing="0">\n);
print qq(<tr>);
print qq(<th>3バイトコード</th>);
for($i = 0 ; $i < 16; $i++) {
printf(qq(<th>+%x</th>), $i);
}
print qq(</tr>\n);
if($ENV{'QUERY_STRING'} eq "e0") {
$start = hex("e0");
$end = hex("e1");
}
elsif($ENV{'QUERY_STRING'} eq "e2") {
$start = hex("e2");
$end = hex("e3");
}
elsif($ENV{'QUERY_STRING'} eq "e4") {
$start = hex("e4");
$end = hex("e5");
}
elsif($ENV{'QUERY_STRING'} eq "e6") {
$start = hex("e6");
$end = hex("e7");
}
elsif($ENV{'QUERY_STRING'} eq "e8") {
$start = hex("e8");
$end = hex("e9");
}
for($i = $start ; $i <= $end ; $i++) {
if($start == hex("e0")) {
$start2 = hex("a0");
}
else {
$start2 = hex("80");
}
$end2 = hex("bf");
for($j = $start2 ; $j <= $end2 ; $j++) {
my $start3 = hex("80");
my $end3 = hex("bf");
for($k = $start3 ; $k <= $end3 ; $k++) {
if(($k - $start3) % 16 == 0) {
print qq(<tr>);
printf(qq(<th>%x%x%x</th>), $i, $j, $k);
}
printf(qq(<td title="%x%x%x">%s%s%s</td>), $i, $j, $k, chr($i), chr($j), chr($k));
if(($k + 1 - $start3) % 16 == 0) {
print qq(</tr>\n);
}
}
}
}
print qq(</table>\n);
}
else {
print qq(<table cellspacing="0">\n);
print qq(<tr>);
print qq(<th>2バイトコード</th>);
for($i = 0 ; $i < 16; $i++) {
printf(qq(<th>+%x</th>), $i);
}
print qq(</tr>\n);
$start = hex("c2");
$end = hex("df");
for($i = $start ; $i <= $end ; $i++) {
$start2 = hex("80");
$end2 = hex("bf");
for($j = $start2 ; $j <= $end2 ; $j++) {
if(($j - $start2) % 16 == 0) {
print qq(<tr>);
printf(qq(<th>%x%x</th>), $i, $j);
}
printf(qq(<td title="%x%x">%s%s</td>), $i, $j, chr($i), chr($j));
if(($j + 1 - $start2) % 16 == 0) {
print qq(</tr>\n);
}
}
}
print qq(</table>\n);
print qq(<table cellspacing="0">\n);
print qq(<tr>);
print qq(<th>1バイトコード</th>);
for($i = 0 ; $i < 16; $i++) {
printf(qq(<th>+%x</th>), $i);
}
print qq(</tr>\n);
for($i = 0 ; $i < 8 ; $i++) {
print qq(<tr>);
printf(qq(<th>%x0</th>), $i);
for($j = 0 ; $j < 16 ; $j++) {
printf(qq(<td title="%02x">%s</td>), $i * 16 + $j, chr($i * 16 + $j));
}
print qq(</tr>\n);
}
print qq(</table>\n);
}
print <<END;
<a href="/">←戻る</a>
</body>
</html>
END
exit;
〔 実行する 〕