Skip to content

Instantly share code, notes, and snippets.

@kuniyoshi
Created December 25, 2012 09:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kuniyoshi/4372460 to your computer and use it in GitHub Desktop.
Save kuniyoshi/4372460 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use 5.10.0;
use utf8;
use strict;
use warnings;
use open qw( :std :utf8 );
use autodie qw( open close );
use Data::Dumper;
use Encode ( );
$Data::Dumper::Terse = 1;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Indent = 1;
my %EUC;
# ki, ei, su, kana
$EUC{1} = { map { $_ => undef } ( 0xA1A0 .. 0xA1FF ) };
$EUC{2} = { map { $_ => undef } ( 0xA2A0 .. 0xA2FF ) };
$EUC{3} = { map { $_ => undef } ( 0xA3A0 .. 0xA3FF ) };
$EUC{4} = { map { $_ => undef } ( 0xA4A0 .. 0xA4FF ) };
$EUC{5} = { map { $_ => undef } ( 0xA5A0 .. 0xA5FF ) };
$EUC{6} = { map { $_ => undef } ( 0xA6A0 .. 0xA6FF ) };
$EUC{7} = { map { $_ => undef } ( 0xA7A0 .. 0xA7FF ) };
$EUC{8} = { map { $_ => undef } ( 0xA8A0 .. 0xA8FF ) };
# kanji 1
$EUC{16} = { map { $_ => undef } ( 0xB0A0 .. 0xB0FF ) };
$EUC{17} = { map { $_ => undef } ( 0xB1A0 .. 0xB1FF ) };
$EUC{18} = { map { $_ => undef } ( 0xB2A0 .. 0xB2FF ) };
$EUC{19} = { map { $_ => undef } ( 0xB3A0 .. 0xB3FF ) };
$EUC{20} = { map { $_ => undef } ( 0xB4A0 .. 0xB4FF ) };
$EUC{21} = { map { $_ => undef } ( 0xB5A0 .. 0xB5FF ) };
$EUC{22} = { map { $_ => undef } ( 0xB6A0 .. 0xB6FF ) };
$EUC{23} = { map { $_ => undef } ( 0xB7A0 .. 0xB7FF ) };
$EUC{24} = { map { $_ => undef } ( 0xB8A0 .. 0xB8FF ) };
$EUC{25} = { map { $_ => undef } ( 0xB9A0 .. 0xB9FF ) };
$EUC{26} = { map { $_ => undef } ( 0xBAA0 .. 0xBAFF ) };
$EUC{27} = { map { $_ => undef } ( 0xBBA0 .. 0xBBFF ) };
$EUC{28} = { map { $_ => undef } ( 0xBCA0 .. 0xBCFF ) };
$EUC{29} = { map { $_ => undef } ( 0xBDA0 .. 0xBDFF ) };
$EUC{30} = { map { $_ => undef } ( 0xBEA0 .. 0xBEFF ) };
$EUC{31} = { map { $_ => undef } ( 0xBFA0 .. 0xBFFF ) };
$EUC{32} = { map { $_ => undef } ( 0xC0A0 .. 0xC0FF ) };
$EUC{33} = { map { $_ => undef } ( 0xC1A0 .. 0xC1FF ) };
$EUC{34} = { map { $_ => undef } ( 0xC2A0 .. 0xC2FF ) };
$EUC{35} = { map { $_ => undef } ( 0xC3A0 .. 0xC3FF ) };
$EUC{36} = { map { $_ => undef } ( 0xC4A0 .. 0xC4FF ) };
$EUC{37} = { map { $_ => undef } ( 0xC5A0 .. 0xC5FF ) };
$EUC{38} = { map { $_ => undef } ( 0xC6A0 .. 0xC6FF ) };
$EUC{39} = { map { $_ => undef } ( 0xC7A0 .. 0xC7FF ) };
$EUC{40} = { map { $_ => undef } ( 0xC8A0 .. 0xC8FF ) };
$EUC{41} = { map { $_ => undef } ( 0xC9A0 .. 0xC9FF ) };
$EUC{42} = { map { $_ => undef } ( 0xCAA0 .. 0xCAFF ) };
$EUC{43} = { map { $_ => undef } ( 0xCBA0 .. 0xCBFF ) };
$EUC{44} = { map { $_ => undef } ( 0xCCA0 .. 0xCCFF ) };
$EUC{45} = { map { $_ => undef } ( 0xCDA0 .. 0xCDFF ) };
$EUC{46} = { map { $_ => undef } ( 0xCEA0 .. 0xCEFF ) };
$EUC{47} = { map { $_ => undef } ( 0xCFA0 .. 0xCFFF ) };
# kanji 2
$EUC{48} = { map { $_ => undef } ( 0xD0A0 .. 0xD0FF ) };
$EUC{49} = { map { $_ => undef } ( 0xD1A0 .. 0xD1FF ) };
$EUC{50} = { map { $_ => undef } ( 0xD2A0 .. 0xD2FF ) };
$EUC{51} = { map { $_ => undef } ( 0xD3A0 .. 0xD3FF ) };
$EUC{52} = { map { $_ => undef } ( 0xD4A0 .. 0xD4FF ) };
$EUC{53} = { map { $_ => undef } ( 0xD5A0 .. 0xD5FF ) };
$EUC{54} = { map { $_ => undef } ( 0xD6A0 .. 0xD6FF ) };
$EUC{55} = { map { $_ => undef } ( 0xD7A0 .. 0xD7FF ) };
$EUC{56} = { map { $_ => undef } ( 0xD8A0 .. 0xD8FF ) };
$EUC{57} = { map { $_ => undef } ( 0xD9A0 .. 0xD9FF ) };
$EUC{58} = { map { $_ => undef } ( 0xDAA0 .. 0xDAFF ) };
$EUC{59} = { map { $_ => undef } ( 0xDBA0 .. 0xDBFF ) };
$EUC{60} = { map { $_ => undef } ( 0xDCA0 .. 0xDCFF ) };
$EUC{61} = { map { $_ => undef } ( 0xDDA0 .. 0xDDFF ) };
$EUC{62} = { map { $_ => undef } ( 0xDEA0 .. 0xDEFF ) };
$EUC{63} = { map { $_ => undef } ( 0xDFA0 .. 0xDFFF ) };
$EUC{64} = { map { $_ => undef } ( 0xE0A0 .. 0xE0FF ) };
$EUC{65} = { map { $_ => undef } ( 0xE1A0 .. 0xE1FF ) };
$EUC{66} = { map { $_ => undef } ( 0xE2A0 .. 0xE2FF ) };
$EUC{67} = { map { $_ => undef } ( 0xE3A0 .. 0xE3FF ) };
$EUC{68} = { map { $_ => undef } ( 0xE4A0 .. 0xE4FF ) };
$EUC{69} = { map { $_ => undef } ( 0xE5A0 .. 0xE5FF ) };
$EUC{70} = { map { $_ => undef } ( 0xE6A0 .. 0xE6FF ) };
$EUC{71} = { map { $_ => undef } ( 0xE7A0 .. 0xE7FF ) };
$EUC{72} = { map { $_ => undef } ( 0xE8A0 .. 0xE8FF ) };
$EUC{73} = { map { $_ => undef } ( 0xE9A0 .. 0xE9FF ) };
$EUC{74} = { map { $_ => undef } ( 0xEAA0 .. 0xEAFF ) };
$EUC{75} = { map { $_ => undef } ( 0xEBA0 .. 0xEBFF ) };
$EUC{76} = { map { $_ => undef } ( 0xECA0 .. 0xECFF ) };
$EUC{77} = { map { $_ => undef } ( 0xEDA0 .. 0xEDFF ) };
$EUC{78} = { map { $_ => undef } ( 0xEEA0 .. 0xEEFF ) };
$EUC{79} = { map { $_ => undef } ( 0xEFA0 .. 0xEFFF ) };
$EUC{80} = { map { $_ => undef } ( 0xF0A0 .. 0xF0FF ) };
$EUC{81} = { map { $_ => undef } ( 0xF1A0 .. 0xF1FF ) };
$EUC{82} = { map { $_ => undef } ( 0xF2A0 .. 0xF2FF ) };
$EUC{83} = { map { $_ => undef } ( 0xF3A0 .. 0xF3FF ) };
$EUC{84} = { map { $_ => undef } ( 0xF4A0 .. 0xF4FF ) };
# not, ki, ei, su, kana
delete @{ $EUC{1} }{ map { 0xA100 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{2} }{ map { 0xA200 + $_ } ( 0xA0, 0xAF .. 0xB9, 0xC2 .. 0xC9, 0xD1 .. 0xDB, 0xEB .. 0xF1, 0xFA .. 0xFD, 0xFF ) };
delete @{ $EUC{3} }{ map { 0xA300 + $_ } ( 0xA0 .. 0xAF, 0xBA .. 0xC0, 0xDB .. 0xE0, 0xFB .. 0xFF ) };
delete @{ $EUC{4} }{ map { 0xA400 + $_ } ( 0xA0, 0xF4 .. 0xFF ) };
delete @{ $EUC{5} }{ map { 0xA500 + $_ } ( 0xA0, 0xF7 .. 0xFF ) };
delete @{ $EUC{6} }{ map { 0xA600 + $_ } ( 0xA0, 0xB9 .. 0xC0, 0xD9 .. 0xFF ) };
delete @{ $EUC{7} }{ map { 0xA700 + $_ } ( 0xA0, 0xC2 .. 0xD0, 0xF2 .. 0xFF ) };
delete @{ $EUC{8} }{ map { 0xA800 + $_ } ( 0xA0, 0xC1 .. 0xFF ) };
# not, kanji 1
delete @{ $EUC{16} }{ map { 0xB000 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{17} }{ map { 0xB100 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{18} }{ map { 0xB200 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{19} }{ map { 0xB300 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{20} }{ map { 0xB400 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{21} }{ map { 0xB500 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{22} }{ map { 0xB600 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{23} }{ map { 0xB700 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{24} }{ map { 0xB800 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{25} }{ map { 0xB900 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{26} }{ map { 0xBA00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{27} }{ map { 0xBB00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{28} }{ map { 0xBC00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{29} }{ map { 0xBD00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{30} }{ map { 0xBE00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{31} }{ map { 0xBF00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{32} }{ map { 0xC000 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{33} }{ map { 0xC100 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{34} }{ map { 0xC200 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{35} }{ map { 0xC300 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{36} }{ map { 0xC400 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{37} }{ map { 0xC500 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{38} }{ map { 0xC600 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{39} }{ map { 0xC700 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{40} }{ map { 0xC800 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{41} }{ map { 0xC900 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{42} }{ map { 0xCA00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{43} }{ map { 0xCB00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{44} }{ map { 0xCC00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{45} }{ map { 0xCD00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{46} }{ map { 0xCE00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{47} }{ map { 0xCF00 + $_ } ( 0xA0, 0xD4 .. 0xFF ) };
delete @{ $EUC{48} }{ map { 0xD000 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{49} }{ map { 0xD100 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{50} }{ map { 0xD200 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{51} }{ map { 0xD300 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{52} }{ map { 0xD400 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{53} }{ map { 0xD500 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{54} }{ map { 0xD600 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{55} }{ map { 0xD700 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{56} }{ map { 0xD800 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{57} }{ map { 0xD900 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{58} }{ map { 0xDA00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{59} }{ map { 0xDB00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{60} }{ map { 0xDC00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{61} }{ map { 0xDD00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{62} }{ map { 0xDE00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{63} }{ map { 0xDF00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{64} }{ map { 0xE000 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{65} }{ map { 0xE100 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{66} }{ map { 0xE200 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{67} }{ map { 0xE300 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{68} }{ map { 0xE400 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{69} }{ map { 0xE500 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{70} }{ map { 0xE600 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{71} }{ map { 0xE700 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{72} }{ map { 0xE800 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{73} }{ map { 0xE900 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{74} }{ map { 0xEA00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{75} }{ map { 0xEB00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{76} }{ map { 0xEC00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{77} }{ map { 0xED00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{78} }{ map { 0xEE00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{79} }{ map { 0xEF00 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{80} }{ map { 0xF000 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{81} }{ map { 0xF100 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{82} }{ map { 0xF200 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{83} }{ map { 0xF300 + $_ } ( 0xA0, 0xFF ) };
delete @{ $EUC{84} }{ map { 0xF400 + $_ } ( 0xA0, 0xA7 .. 0xFF ) };
foreach my $ku ( keys %EUC ) {
foreach my $ten ( keys %{ $EUC{ $ku } } ) {
$EUC{ $ku }{ $ten } = Encode::decode( "euc-jp", pack "n*", $ten );
}
}
### foreach my $ku ( sort { $a <=> $b } keys %EUC ) {
### foreach my $ten ( sort { $a <=> $b } keys %{ $EUC{ $ku } } ) {
### say "$EUC{$ku}{$ten}\t$ku\t$ten";
### }
### }
###
return \%EUC;
__END__
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0208.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment